Java 日志组件,Log4j 2.5 发布

nyyb 8年前

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.