经过大型J2EE项目实测,Log4j的日志输出对系统性能有比较显著的影响,尤其是日志输入量比较大时,例如:系统并发量很大,显示Hibernate的sql和参数日志,或日志级别较低DEBUG或INFO时等。
使用Async Logger控制日志输出可以显著改善系统性能。
1) 测试用例:同步文件日志输出
测试功能:模块管理功能,
输出Hibernate SQL和参数,输出到文件,配置如下:
<appender name="Hibernate_SQL" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="log/Hibernate_SQL.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyyy-MM-dd-HH" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%-5p](%C,%L) - %m%n" />
</layout>
</appender>
<category name="org.hibernate.SQL">
<priority value="TRACE" />
<appender-ref ref="Hibernate_SQL" />
</category>
<category name="org.hibernate.type">
<priority value="TRACE" />
<appender-ref ref="Hibernate_SQL" />
</category>
运用JMeter进行压力测试,线程数50,运行4次,计算请求平均响应值(Rame-up Period: 1, 循环次数:1)
测试结果:AVG: 12565ms
2) 测试用例:异步文件日志输出
Log4j.xml 配置修改如下:
<appender name="ASYNC_Hibernate_SQL" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="512"/>
<appender-ref ref="Hibernate_SQL"/>
</appender>
<category name="org.hibernate.SQL">
<priority value="TRACE" />
<appender-ref ref="ASYNC_Hibernate_SQL" />
</category>
<category name="org.hibernate.type">
<priority value="TRACE" />
<appender-ref ref="ASYNC_Hibernate_SQL" />
</category>
在BufferSize为 32, 64,128,256,512,2048时测试的请求平均耗时,及较测试用例1中的性能提高率对比如下所示:
同步,异步日志性能对比分析
|
(每次50并发,运行4次)
|
|
sync 日志输出
|
原时间消耗
|
|
|
12565
|
|
async 日志输出
|
|
|
缓冲区大小
|
平均耗时
|
性能提高率
|
32
|
6744
|
46.33%
|
64
|
8487
|
32.46%
|
128
|
6899
|
45.09%
|
256
|
6606
|
47.43%
|
512
|
7306
|
41.85%
|
2048
|
3406
|
72.89%
|
从结果可以看出,性能提高率最高 47%。最低32%。缓冲为256时性能改善最佳, 提高47%
结论:使用Log4j的J2EE应用,日志的优化对系统性能有显著影响:
1)尽量减少不必要的日志输出,尤其要避免 root logger上过低级别的输出,避免在生产环境上向控制台输出日志。例如,下面的配置是很影响性能的,:
<root>
<priority value="DEBUG" />
<appender-ref ref="CONSOLE" >
</root>
2) 使用Async logger输出日志,buffersize在相应日志频率下,越大越好,对于大型项目,可以选2048以上值。
分享到:
相关推荐
而Log4j2的一个显著特性是支持异步日志写入,这种模式可以显著提高系统的整体性能,特别是在高并发环境下。 本文主要探讨Log4j2异步写日志的效率,通过源码分析和测试来展示其优势。首先,我们要理解Log4j2中的异步...
Log4j2是Apache提供的一款强大且灵活的日志框架,它的出现替代了早期的Log4j,提供了更高的性能和更丰富的功能。本文将深入探讨如何在Log4j2中实现异步写日志,并通过提供的文件`TestController.java`、`log4j2.xml`...
Log4j2引入了异步日志记录器,通过使用后台线程处理日志事件,从而避免了这种阻塞,极大地提升了应用的性能。 **多线程支持** 在多线程环境中,Log4j2能够确保日志事件的正确性和顺序。每个线程都有自己的日志上...
Log4j2是Apache软件基金会开发的日志框架Log4j的升级版,它具有更高的性能、灵活性和可配置性。Log4j2支持多种日志记录级别(如DEBUG、INFO、WARN、ERROR),并允许通过XML、JSON、YAML或纯Java配置文件进行灵活配置...
**日志系统在软件开发中扮演着至关重要的角色,它能帮助开发者跟踪程序运行...同时,不断学习和探索log4j的高级特性,如异步日志、MDC(Mapped Diagnostic Context)等,可以进一步提升日志系统的实用性和可维护性。
在使用 Apache Tomcat 作为服务器时,合理配置日志框架(如 Log4j)能够极大地提高开发效率和系统的可维护性。本文将详细介绍两种常见的 Log4j 配置方式:Tomcat 级别的统一日志管理和每个 web 应用分别配置 Log4j,...
Log4j 的核心组件包括日志记录器(Logger)、日志输出目的地(Appender)和日志格式化器(Layout)。 二、配置 Log4j.properties 文件 在 SSM 整合项目中,配置 Log4j.properties 文件是必不可少的步骤。该文件...
使用Slf4j集成Log4j2构建项目日志系统的完美解决方案 Slf4j是简单的日志外观(Facade)模式,它提供了统一的日志接口,使得用户可以选择不同的日志实现。Slf4j的出现使得日志系统的开发变得更加灵活和便捷。Log4j2...
Log4j是一款广泛使用的Java日志记录框架,它允许开发者按照功能模块或特定需求记录应用程序...通过正确配置,不仅可以方便地追踪和分析问题,还能优化系统性能,确保日志系统在不影响业务运行的前提下发挥最大效用。
随着技术的发展,Log4j也经历了多次版本更新,其中Log4j 2.x引入了更多改进和新特性,如异步日志、插件体系等。值得注意的是,2021年Log4j 2.0至2.14.1版本出现了一个重大安全漏洞(CVE-2021-44228),导致远程代码...
总的来说,处理Log4j的初始化警告,关键在于正确配置和引入Log4j依赖,以及在需要使用日志的地方正确初始化logger。确保配置文件可用且路径正确,以及在代码中正确调用logger,通常可以消除这些警告。
### Log4j日志配置详解 #### 一、概述 Log4j 是一个基于 Java 的开源日志记录框架,由 Apache 软件基金会维护。它允许开发人员根据等级记录日志信息,使得用户能够控制日志信息的记录级别及去向。本文将通过一份...
本文将深入探讨如何利用Log4j进行日志输出格式化以及设置日志文件名格式化,以满足公司的标准化需求。 首先,我们来看日志输出格式化。Log4j的核心在于其灵活性,可以通过自定义布局模板来控制日志输出的格式。最...
Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的配置选项,允许开发者灵活地控制日志输出。当我们面对特定项目需求,比如需要自定义日志文件名和日志输出格式时,Log4j同样提供了相应的解决方案。 首先...
《深入理解Log4j日志打印》 在Java开发领域,日志打印是不可或缺的一环,它对于系统调试、性能监控、故障排查等都起着至关重要的作用。Log4j作为Java中最常用的日志框架之一,深受广大开发者喜爱。本文将深入探讨...
**日志系统在软件开发中的重要性** 日志系统是软件开发中不可或缺的一部分,它能够帮助开发者追踪程序运行状态,定位错误,优化性能,...在实际开发中,正确地使用和配置`log4j`能显著提升问题排查和系统监控的效率。
**日志系统在软件开发中的重要性** ...正确配置和使用Log4j,不仅能够提高问题定位的效率,还有助于提升系统的整体运维水平。因此,理解并熟练掌握Log4j对于任何Java开发者来说都是必备技能之一。
**日志库Log4j详解** 日志在软件开发中起着至关...正确配置和使用Log4j能显著提高开发效率,同时也有助于提升系统的可维护性。这个资源包中的Log4j jar包以及相关的博文学习资料,将有助于你更好地理解和应用Log4j。
相比传统的同步日志记录,Log4j2引入了异步日志记录模式,这一特性使得日志处理速度显著提升,尤其在高并发场景下,能够避免日志记录成为系统性能瓶颈。 Log4j2的核心组件包括配置器、日志事件、布局和Appender。...
总之,Log4j 提供了灵活的日志配置选项,特别是异步日志记录,能有效提升系统性能。通过正确配置和测试,我们可以确保日志系统按照预期工作,为日常开发和运维提供有力支持。希望本文能帮助你更好地理解和应用 Log4j...