写点什么

Log4j2 的 Appenders 配置详解

  • 2021 年 11 月 11 日
  • 本文字数:1090 字

    阅读完需:约 4 分钟

控制台输出源是将日志打印到控制台上,开发的时候一般都会配置,以便调试。


  • name:指定 Appender 的名字。

  • target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT。

  • PatternLayout:输出格式,不设置默认为:%m%n。


AsyncAppender




异步输出。AsyncAppender 接受对其他 Appender 的引用,并使 LogEvents 在单独的 Thread 上写入它们。


默认情况下,AsyncAppender 使用 java.util.concurrent.ArrayBlockingQueue ,它不需要任何外部库。请注意,多线程应用程序在使用此 appender 时应小心:阻塞队列容易受到锁争用的影响,并且我们的 测试 表明,当更多线程同时记录时性能可能会变差。考虑使用无锁异步记录器以获得最佳性能。


FileAppender




文件输出源,用于将日志写入到指定的文件,其底层是一个 OutputStreamAppender,需要配置输入到哪个位置(例如:D:/logs/mylog.log)


  • name:指定 Appender 的名字。

  • fileName:指定输出日志的目的文件带全路径的文件名。

  • PatternLayout:输出格式,不设置默认为:%m%n。


RollingFileAppender




RollingFileAppender 是一个 OutputStreamAppender,它写入 fileName 参数中指定的 File,并根据 TriggeringPolicy 和 RolloverPolicy 滚动文件。


RandomAccessFileAppender




RandomAccessFileAppender 类似于标准的 FileAppender, 除了它总是被缓冲(这不能被关闭),并且在内部它使用 ByteBuffer + RandomAccessFile 而不是 BufferedOutputStream。与 FileAppender 相比,我们在测量中看到“bufferedIO = true”,性能提升了 20-200% 。


RollingR


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


andomAccessFileAppender




RollingRandomAccessFileAppender 类似于标准的 RollingFileAppender, 除了它总是被缓冲(这不能被关闭),并且在内部它使用ByteBuffer + RandomAccessFile 而不是BufferedOutputStream。与 RollingFileAppender 相比,我们在测量中看到“bufferedIO = true”,性能提升了 20-200%。RollingRandomAccessFileAppender 写入 fileName 参数中指定的文件,并根据 TriggeringPolicy 和 RolloverPolicy 滚动文件。


RollingRandomAccessFile: 该输出源也是写入到文件,不同的是比 File 更加强大,可以指定当文件达到一定大小(如 20MB)时,另起一个文件继续写入日志,另起一个文件就涉及到新文件的名字命名规则,因此需要配置文件命名规则。这种方式更加实用,因为你不可能一直往一个文件中写,如果一直写,文件过大,打开就会卡死,也不便于查找日志。


  • name:指定 Appender 的名字。

  • fileName 指定当前日志文件的位置和文件名称

  • filePattern 指定当发生 Rolling 时,文件的转移和重命名规则

评论

发布
暂无评论
Log4j2的Appenders配置详解