文章摘要: Log4j 2 是日志框架(日志实现)。
简介
简要说明
- log4j2是Apache软件基金会下的一个开源项目,它是log4j的升级版,提供了一种灵活、强大的日志框架。
- 使用 Log4j 2 在系统中运行必须事先设定配置文件。
主要功能
- 性能提升:在多线程环境下,log4j2表现出比其他日志框架更高的日志记录性能。
- 插件式架构:log4j2允许通过配置文件动态地加载和更改日志处理组件,通过插件可以很容易地添加新的Appender、Filter和Layout。
- 强大的API:提供了丰富的日志级别、格式化工具和日志路由选项。
- 异步处理:支持异步日志记录,减少日志记录对应用程序性能的影响。
- 配置灵活:支持XML、JSON、YAML、Properties的配置方式。
- 日志审计:支持日志事件的审计功能。
- 自动重载配置:可以动态修改日志的级别而不需要重启应用。
- 无垃圾机制:避免频繁的日志收集导致的jvmgc。
注意事项
- 配置文件:确保log4j2的配置文件正确无误,错误的配置可能导致日志功能失效。
- 日志级别:合理设置日志级别,避免生产环境中输出过多的日志信息,影响性能。
- 异步日志:在使用异步日志时,要注意配置合理的队列大小和线程数量,以避免内存溢出。
- 依赖管理:在项目中引入log4j2时,要注意排除其他日志框架的依赖,避免冲突。
- 安全性:log4j2曾出现过安全漏洞,使用时需确保版本是最新的,并及时关注官方的安全通告。
- 性能测试:在上线前进行充分的性能测试,确保日志记录不会对系统性能产生负面影响。
- 资源释放:在应用程序关闭时,确保log4j2的资源得到正确释放,避免内存泄漏。
适用场景
Maven坐标
<dependency> <!--log4j日志记录框架_门面-->
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.24.1</version>
</dependency>
<dependency> <!--log4j日志记录框架_实现-->
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.24.1</version>
</dependency>
log4j2核心组件
Loggers(记录器)
日记级别
DEBUG(调试) < INFO(信息) < WARN(警告) < ERROR(错误) < FATAL(致命)
提示:大于当前设置日志级别的日志才会被输出。
Appenders(输出源)
输出地方
- 控制台、文件
常用类
org.apache.log4j.ConsoleAppender:控制台。org.apache.log4j.FileAppender:文件。org.apache.log4j.DailyRollingFileAppender:每天产生一个日志文件。org.apache.log4j.RollingFileAppender:文件大小达到指定尺寸的时候产生一个新的文件。org.apache.log4j.WriterAppender:将日志信息以流格式发送给任意指定的地方。
Layouts(布局)
输出格式/样式/占位符
- HTML样式。
- 自由指定样式。
- 包含日志级别与信息的样式。
- 包含日志时间、线程、类别等信息的样式。
详细总结:Log4j2-占位符
常用类
org.apache.log4j.HTMLLayout:以HTML表格形式布局。org.apache.log4j.PatternLayout:可以灵活地指定布局模式。org.apache.log4j.SimpleLayout:包含日志信息和级别和信息字符串。org.apache.log4j.TTCCLayout:包含日志产生的时间、线程、类别等信息。
异步日志处理机制
性能优化
了解log4j2的性能优化技巧,如调整缓冲区大小、使用异步日志等。
配置文件
详细总结:Log4j2-XML文件配置
其他框架集成
掌握log4j2与Spring、MyBatis等框架的集成方法。