官网
https://logging.apache.org/log4j/2.x/
http://jakarta.apache.org/log4j
其他博客
https://blog.csdn.net/qq_43842093/article/details/122074347
https://blog.csdn.net/u013870094/article/details/79518028
http://jakarta.apache.org/log4j
log4j2 最大的特点就是异步日志,其性能的提升主要也是从异步日志中受益,我们来看看如何使用log4j2 的异步日志
。
log4j2通过讲打日志流程中的部分阶段进行异步化,使得日志打印性能得到了很大的提升。
要想了解log4j如果实现异步日志,进而提升性能,就需要先了解日志打印的基本过程。
关键概念
在log4j中,有两个重要的概念,分别是Logger
、Appender
。Logger是负责具体的生产日志数据
,我们平时的Logger.info(…)就是生产日志数据的过程。Appender则是负责讲数据搬运到目的地
,如console、文件、hive、网络设备等等。
而log42实现异步日志,
主要包括以下两种方式:
异步Logger
AsyncLogger才是log4j2 的重头戏,也是官方推荐的异步方式。
它可以使得调用Logger.log返回的更快。你可以有两种选择:全局异步和混合异步
异步Logger通过使用LMAX Disruptor环形队列和单独的处理线程,避免了锁的竞争,从而实现更高的吞吐量。队列大小默认4096,通过以下参数,可以开启异步日志。
-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
异步Appender
异步Appender则是使用了java中的ArrayBlockingQueue,默认队列大小1024。log4j2官方测试,asyncLogger相比asyncAppender有更好的表现。
。
DailyRollingFileAppender有哪些属性
https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html
log4j1.x支持配置只保留最近7天的日志文件吗?