slf4j抽像了一套统一的日志接口,可以很方便的与其他日志框架搭配进行日志输出,通过配置可以灵活的对日志进行过滤,格式控制等,推荐在项目开发中使用,此文主要简述slf4j与log4j的使用。
注意事项
应当避免在项目中直接使用java.util.logging.Logger、log4j等日志框架,否则当变更日志框架时,代码可能需要重构,而如果使用slf4j,只需替换相应的日志接口实现库即可。
slf4j官方地址
log4j官方地址
http://logging.apache.org/log4j/1.2/
下载地址
https://www.slf4j.org/dist/slf4j-1.7.25.zip
http://mirror.bit.edu.cn/apache/logging/log4j/1.2.17/log4j-1.2.17.zip
依赖库
slf4j-api-1.7.25.jar
slf4j-log4j12-1.7.25.jar
log4j-1.2.17.jar
log4j.properties配置
log4j.rootLogger=TRACE, STDOUT, ERRLOG
log4j.appender.encoding=UTF-8
#log to console
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Threshold=TRACE
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%d][%-5p] (%F:%L) - %m%n
#log to file
log4j.appender.ERRLOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERRLOG.Threshold=TRACE
log4j.appender.ERRLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.ERRLOG.layout.ConversionPattern=[%d][%-5p] (%F:%L) - %m%n
log4j.appender.ERRLOG.file=logs/error.log
log4j.appender.ERRLOG.DatePattern=-yyyyMMdd
示例代码
package com.lxl;
import java.net.URL;
import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Slf4jDemo {
public static void main(String[] args) {
// 如果配置文件名为log4j.properties,且放在类加载路径下,以下两行代码可以不写
URL url = ClassLoader.getSystemResource("log4j.properties");
PropertyConfigurator.configure(url);
Logger logger = LoggerFactory.getLogger(Slf4jDemo.class);
logger.trace("trace msg");
logger.debug("debug msg");
logger.info("info msg");
logger.warn("warn msg");
logger.error("error msg");
}
}
控制台输出
[2017-09-28 17:50:34,244][TRACE] (Slf4jDemo.java:16) - trace msg
[2017-09-28 17:50:34,244][DEBUG] (Slf4jDemo.java:17) - debug msg
[2017-09-28 17:50:34,244][INFO ] (Slf4jDemo.java:18) - info msg
[2017-09-28 17:50:34,244][WARN ] (Slf4jDemo.java:19) - warn msg
[2017-09-28 17:50:34,244][ERROR] (Slf4jDemo.java:20) - error msg