日志系统2
目前流行的日志门面接口有common-logging、slf4j,以前一直都在使用前者,后来许多文章都在介绍slf4j,很多地方都在介绍slf4j的优点(最主要的比common-logging优越的地方是能在OSGi环境下使用,但是至于为什么common-logging不能使用还是不太清楚),因此决定开始尝试slf4j,对于jar包引入方面,感觉稍微没有common-logging方便,common-logging会自动从众多日志实现的jar包中自动选择,而slf4j需要放入“合适”的jar包才能使用,当然这根它的实现机制有关系,slf4j的实现机制要求她必须这么做。
?
对于日志门面接口的介绍网上有很多文章介绍,不多说废话了,直接记录点实惠的东西,供查用。
?
slf4j这是门面接口,没有实现,如同common-logging一样,需要搭配具体的实现才能使用;
貌似logback是slf4j的亲密搭配,从引入jar包的名称也能看出来;
?
下面介绍两种搭配方式:
?
1. slf4j+logback
?
引入包:slf4j-api.jar、logback-classic、logback-core.jar (注意这三个版本必须一致)
?
logback最简单的配置示例(不是必须的)logback.xml:
<configuration debug="true"><appender name="STDOUT" /></root><!-- 下面配置一些具体包的日志过滤级别 --><logger name="org.apache.activemq" level="WARN"/></configuration>
?
2.slf4j+log4j
?
引入包:slf4j-api.jar、slf4j-log4j.jar、log4j.jar(注意三个版本必须一致)
?
log4j配置示例,log4j.properties:
#设置级别和目的地log4j.rootLogger=debug,appender1#输出到控制台log4j.appender.appender1=org.apache.log4j.ConsoleAppender#设置输出样式log4j.appender.appender1.layout=org.apache.log4j.PatternLayout#自定义样式# %r 时间 0# %t 方法名 main# %p 优先级 DEBUG/INFO/ERROR# %c 所属类的全名(包括包名)# %l 发生的位置,在某个类的某行# %m 输出代码中指定的讯息,如log(message)中的message# %n 输出一个换行符号log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%C-%M] %m%n#输出到文件(这里默认为追加方式)log4j.appender.appender2=org.apache.log4j.FileAppender#设置文件输出路径#【1】文本文件log4j.appender.appender2.File=c:/log1.log#设置文件输出样式log4j.appender.appender2.layout=org.apache.log4j.PatternLayoutlog4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss:SSS}][%C-%M] -%m%n?
无论哪种搭配方式,程序中使用的方法如下:
?
程序中先定义logger
private static Logger logger = LoggerFactory.getLogger(YourClass.class);//slf4j logging?
程序中日志输出方法:
logger.debug("hello");logger.info("hello{}",p);//p是变量?
?
?
?