使用slf4j 调用log4j搭建日志框架。
首先要导入依赖包。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
log4j会自动读取classpath下的log4j.properties 文件,但是如果放在其他文件夹下就需要在web.xml中进行导入配置。
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:conf/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>3000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
然后就是配置log4j.properties ,关于具体格式的讲解网上很多,这里只给出本人常用的格式设置。
#定义LOG输出级别
log4j.rootLogger=INFO,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%5p %d{yyyy-MM-dd HH\:mm\:ss} %m [%c] %n
#每天产生一个日志文件
log4j.appender.File = org.apache.log4j.DailyRollingFileAppender
#指定输出目录
log4j.appender.File.File = d:/logs/ssm.log
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = DEBUG
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =%5p %d{yyyy-MM-dd HH\:mm\:ss} %m [%c] %n
这样就可以在代码中记录日志了。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(BookInfoRest.class);
logger.info("log info {}", 123);
logger.error("error");
logger.info("arg1:{} arg2:{}", 12, 13);
使用slf4j 的好处是可以随意切换不同的日志库,只需要更改桥接方式,配置文件即可,不需要对代码进行任何更改。当项目移植的时候这一点很重要。