目录
Log4j概念和优点
Log4j是Apache的一个开源日志项目,通过log4j,开发人员可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是远程服务器。可以通过配置文件来灵活配置日志输出格式和日志生成级别,不需要修改应用程序代码,大大降低了对应用程序的侵入性。
log4j2配置
log4j2是通过xml进行配置,一般命名为log4j2.xml。
log4j2.xml 的配置文件结构:
Appenders元素Appenders元素是Configuration元素的子节点,可以指定日志输出的路径,常见输出路径有控制台、文件和网络Socket等。Appenders元素常见子节点如下:
• Console:用来将日志输出到控制台。name属性指定Appender的名字;target属性可以为SYSTEM_OUT或SYSTEM_ERR,一般使用SYSTEM_OUT;PatternLayout元素设置日志输出的格式。
• File:用于设置将日志输出到指定的文件中。fileName指定输出日志的目标文件带全路径的文件名;name和PatternLayout元素的作用同Appenders中的PatternLayout。
• RollingFile:用于将日志输出到滚动文件中,日志输出时会判断文件是否满足封存文件的要求,若满足,则将文件封存并把日志写入到下一个滚动文件。其中的name、fileName和PatternLayout的作用同File;filePattern属性用于指定新建日志文件的命名格式;DefaultRolloverStrategy用来指定同一个目录下最多有几个日志文件时开始删除最旧的日志文件,并创建新的文件(通过max属性);Policies元素指定滚动日志的策略,即何时新建文件输出日志。
level属性用于定义日志输出级别,共有8个,从低到高顺序为All<Trace<Debug<Info<Warn<Error<Fatal<OFF;
AppenderRef是Root的子节点,用于指定将日志输出到Appenders元素定义的Appenders中。
log4j的日志级别
Log4j2中定义了8种不同的日志级别,各种日志级别如下(<表示小于):
All<Trace<Debug<Info<Warn<Error<Fatal<OFF;
当开发者打印日志时需要注意,程序会打印高于或等于所设置级别的日志,设置的日志级别越高,打印出来的日志就越少;设置的日志级别越低,打印的日志就越多。选择合适的日志级别对于高并发场景下控制日志输出量很有帮助,否则可能会导致输出的日志过多或过少,不便于定位和监控系统运行情况。
日志打印实现
企业开发过程中一般不直接使用Log4j2的API进行日志打印,而是使用SLF4J的API进行日志打印。
Log4j2执行原理图
SLF4J可以有不同的日志实现,Log4J2只是其中的一种,当程序中将SFL4J、SFL4J-Log4J2桥接器、Log4J2配合使用时,即完成了一个Log4J2环境的搭建。一般情况下,将log4j2.xml文件放置在classpath的resources目录下即可(约定优于配置)