1、概述
log4j是Apache提供的一个日志实现,可以用于我们项目中的日志记录,有log4j1和log4j2两个版本,本文使用log4j2这个版本。SLF4J(Simple logging facade for Java)不是一个真正的日志实现,而是一个抽象层,相当于一个统一的接口,它允许你在后台使用任意一个日志类库。我们使用SLF4J提供的接口进行日志记录的编程,当我们需要更换具体的日志实现时,可以不需要更改日志的代码,只要加入响应的jar包和配置就可以切换实现。本文使用log4j+slf4j进行配置。
2、maven配置
在maven配置文件中加入以下依赖jar包。
org.apache.logging.log4j log4j-api 2.7 org.apache.logging.log4j log4j-core 2.7 org.apache.logging.log4j log4j-slf4j-impl 2.7 org.apache.logging.log4j log4j-jcl 2.7 org.slf4j slf4j-api 1.7.10
3、log4j2配置
Configuration节点中有两个属性,status表示log4j自己的日志打印级别,如果设置为TRACE,可以看到控制台输出log4j本身的日志信息。
monitorInterval表示每隔多少秒自动检测配置文件的更改,单位是秒,最小的时间间隔是5秒。Appenders中有一个Appender,表示从控制台输出,name属性为每个Appender的唯一标识。
PatternLayout定义了我们日志输出格式。%d{yyyy-MM-dd HH:mm:ss.SSS}:表示输出的日期格式
%t:表示当前线程名称
%-5level:输出日志级别,-5表示左对齐并且固定输出5个字符
%l:输出语句所在的包名、类名、函数名、行数
%msg:输出日志的内容
%n:换行
%F 输出所在的类文件名
%L 输出行号
%M 输出所在方法名
4、将日志输出到文件
如下配置了一个名为RollingFile的Appenders,将日志输出到指定的文件中。fiileName表示日志的位置和文件名,filePattern表示当条件满足时,文件移动和重命名的规则。TimeBasedTriggeringPolicy需要和filePattern配套使用,由于filePattern配置的时间最小粒度是dd天,所以表示每一天新建一个文件保存日志。SizeBasedTriggeringPolicy表示当文件大小大于指定size时,生成新的文件保存日志。
我们自定义了一个Logger,引用RollingFile这个日志适配器,当我们使用myLearningLog这个Logger来记录日志时,日志信息就会输出到文件中保存。
5、完整示例如下
${sys:catalina.home}/logs/ debug gateway_ ${log_pattern} ${log_pattern} ${log_pattern} ${log_pattern}