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 改進列表:
</div>新特性:
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).
</div>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.
</div>