Java日志-Slf4J
2015年11月10日
1 目标:使用统一的日志API操作日志,绑定不同的实现包完成实际的日志操作。
2 原理:slf4j.jar作为统一的api,调用其它的impl包作为底层实现。
3 流程:安装库,配置日志,输出日志
3.1 安装库:安装Slf4J的api库,安装Log4J2的Slf4j实现库,安装Log4J2的功能库,并添加到ClassPath。
3.1.1下载Slf4J,解压后将安装api库:
Slf4J的api库:slf4j-api-1.7.12.jar
3.1.2超载Log4J2,解压后安装实现库和功能库
log4J2的Slf4J实现库:log4j-slf4j-impl-2.4.1.jar
log4J2的功能库:log4j-api-2.4.1.jar,log4j-core-2.4.1.jar。
3.2 配置日志:使用Log4J2的配置方式。
可以省略,但会给出报错误警告。
3.3 输出日志:使用Slf4J的统一接口。
//Main.java
packagelee;
importorg.slf4j.Logger;
publicclass Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Logger logger =LoggerFactory.getLogger("root");
logger.error("this iserror");
logger.info("this isinfo.");
}
}
4 方法
只是调用方法使用slf4j,其它操作完全与log4j2相同。
4.1 配置文件:log4j2的配置文件
4.2 输出日志:使用程序输出日志,与log4j2类似。
4.2.1日志管理对象:LogFactory,管理日志对象组织和其它选项。
4.2.2日志对象:Logger,控制日志的输出等。
示例:
Logger logger =LoggerFactory.getLogger("root");
logger.error("this iserror");
5 示例:输出控制台、文件,滚动文件日志。
//log4j2.xml
pattern="msg=%m~File=%F~Line=%L~Method=%M~Console~%d{yyyyMMM dd HH:mm:ss,SSS}%n" />
pattern="%d{DEFAULT}~%levelclass:%C line:%L method:%M - %m%xEx%n" />
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
msg=%m~File=%F~Line=%L~Method=%M~Console~%d{yyyyMMM dd
HH:mm:ss,SSS}%n
//Main.java
packagelee;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
publicclass Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Logger logger =LoggerFactory.getLogger("root");
logger.error("this iserror");
logger.info("this isinfo.");
Logger myLogger =LoggerFactory.getLogger("com.test.loggerxx");
myLogger.error("myLogger:this iserror");
myLogger.info("myLogger:this isinfo.");
Logger leeLogger =LoggerFactory.getLogger("lee.log");
for (int i = 0; i < 1000000; ++i){
leeLogger.error("leeLogger:thisis error");
leeLogger.info("leeLogger:thisis info.");
}
}
}