Java 日志组件,Log4j 2.5 发布
Log4j 是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
Log4j 2.5 发布,此版本是第九个 GA 版本,包括一些 bug 修复和新特性。新特性包括在 file rollover 的时候指定删除操作;一个基于 CRON 的触发策略;过滤器支持 JSR 223 脚本,模式选择器和删除操作,新增一个策略移除 RoutingAppender 的闲置输出源。Log4j 2 最低要求 Java 7。
Log4j 2.5 改进列表:
新特性:
o LOG4J2-435: Added support for custom delete actions triggered by a rollover. Thanks to
Robert Schaft.
o LOG4J2-89: Allow rollover to occur at any time. Add CronTriggeringPolicy.
o LOG4J2-1136: Add support for JSR 223 scripts in filters and the PatternSelector.
o LOG4J2-1168: Add getters for source and destination file in file rename action. Thanks
to Steven Swor.
o LOG4J2-1175: Add getters for classes in org.apache.logging.log4j.core.appender.rolling.action.
o LOG4J2-898: Added system property to allow users to control whether messages should be
formatted in the background.
o LOG4J2-1178: Support use-case for JDBC's CommonDataSource.setLogWriter(PrintWriter) and
java.sql.DriverManager.setLogWriter(PrintWriter).
o LOG4J2-1187: Support use case for java.sql.DriverManager.setLogStream(PrintStream).
Bugs 修复:
o LOG4J2-324: Reduced memory usage of status messages in bounded queue; support zero-length
queue that stores no messages.
o LOG4J2-1173: Fixed rollover error when copying to a directory mapped to a remote Linux
host.
o LOG4J2-1195: Make KafkaAppender support SerializedLayout. Thanks to Melvin Du.
o LOG4J2-381: Allow triggering policy and rollover strategy to be modified during reconfiguration.
Thanks to Anthony Baldocchi.
o LOG4J2-1029: Performance improvement when gathering location information. Thanks to Stefan
Leonhartsberger.
o LOG4J2-1172: Fixed ThreadLocal leak [AsyncLogger$Info] on Tomcat when using AsyncLoggerContextSelector.
o LOG4J2-1176: Fixed memory leak when log4j jars are in Tomcat's lib folder.
o LOG4J2-1180: Logger cache does not account for message factory. Thanks to Mikael Ståldal.
o LOG4J2-879: Documentation: fixed minor issues with the site and manual pages.
o LOG4J2-999: RollingFileAppender should also roll over when log event time is equal to rollover
time, not only when later. Thanks to Joan Balagueró.
o LOG4J2-873: Fixed bug where omitting the <display-name> element in web.xml caused
incorrect log4j initialization,
resulting in memory leaks when the web application was stopped or reloaded. Thanks
to Martin Dickins, LC, Luke Woodward.
o LOG4J2-323: Better web app support for async loggers: Fixed a memory leak that occurred
when the logging jars are placed
in the container's classpath and the configuration file uses AsyncRoot/AsyncLogger.
The problem was that the first web application started the Disruptor background thread
[AsyncLoggerConfig-1] but did not stop it until all web apps are stopped.
Each web application now has its own Disruptor which is stopped/started together with
the web app.
o LOG4J2-493: Better web app support for async loggers: it is now possible to place the logging
jars in the container's
classpath when making all loggers asynchronous by using AsyncLoggerContextSelector.
This fixes a problem where
logging would stop working after stopping and restarting a web application.
o LOG4J2-1171: Use servlet context name for logger context name when available.
o LOG4J2-1159: Fixed a ThreadLocal memory leak in Tomcat8 that mentions AsyncLoggers when
Async Loggers are not used.
o LOG4J2-1166: AbstractConfiguration executor should use a DaemonThreadFactory.
o LOG4J2-1165: Improve Log4j initialization status messages.
o LOG4J2-1156: Web site corrections and updates.
o LOG4J2-1158: Log4J JUL adapter is using MessageFormat on String passed by java.util.function.Supplier<String>.
Thanks to Michael Fortin, Gary Gregory.
o LOG4J2-801: org.apache.logging.log4j.core.Logger should be serializable.
o LOG4J2-1157: Fix compilation error for classes annotated with @Plugin. Thanks to Norbert
Bartels.
o LOG4J2-948: Fix plugin documentation error about Converters. Thanks to Andrew Flower.
o LOG4J2-1193: Prefix all thread names Log4j creates with "Log4j2-".
o LOG4J2-1194: Documentation does not match parameters for LoggerNameLevelRewritePolicy.
Thanks to Adam Brin.
o LOG4J2-1196: MongoDbConnection does not close MongoClient. Thanks to René Zanner.
改进:
o LOG4J2-649: Add PurgePolicy and IdlePurgePolicy to RoutingAppender. Thanks to Aleksey Zvolinsky.
o LOG4J2-1202: Remove ConfigurationMonitor. The WatchManager is now used to check for configuration
changes.
o LOG4J2-1174: Update Jackson from 2.6.2 to 2.6.3.
o LOG4J2-1207: Update kafka-clients from 0.8.2.2 to 0.9.0.0.