java日志: logback和slf4j

来源:互联网 发布:医院招聘程序员 编辑:程序博客网 时间:2024/05/16 07:02


谈到在Java应用程序里写日志,log4j过去是现在可能仍然是事实上的标准。

由Sun提供的JDK内的写日志的方案一直无法全面推广。

造成这种情况的原因当然是其缺乏可配置性和灵活性。

JDK的日志方案对于比较简单的项目来讲当然是一种解决办法,但对于企业级的应用来讲就不然了。

现在,除了log4j之外,另有一种新的比log4j更强大、更快和更灵活的实现已经上市了:logback

好吧,实际上logback是始于2006年的,但其版本1.0在2011年11月份才发布。


logback开发出来就是为了替代log4j的,它和log4j都是出自同一个开发者。

版本1.0经过多年的测试和开发现已可供使用了(最新版本是1.0.1)。

为了避免由于其版本号这么小而造成误解,应该指出的是,logback已经在业界使用多年了,

总之其版本号绝不是反映其稳定性和功能性方面的声明。

logback同log4j相比具有众多优势。下面列出一部分:

  • 更快的实现
  • 自动重新装载日志配置文件
  • 更好的过滤器(filter)
  • 自动压缩归档的日志文件
  • 堆栈跟踪里包括了Java包(jar文件)的信息
  • 自动删除旧日志归档文件

对于开发者来讲,从log4j转换到logback非常容易。只要在你的Maven POM中转换一个依赖就算准备好了:

?
1
2
3
4
5
<dependency
   <groupId>ch.qos.logback</groupId
   <artifactId>logback-classic</artifactId
   <version>1.0.0</version
</dependency>
由于传递性依赖,日志facace,slf4j,也已经添加到你的project中了。

用slf4j做个“Hello World”例子,就象这样:

?
1
2
3
4
5
6
7
8
9
packagedemo; 
importorg.slf4j.Logger; 
importorg.slf4j.LoggerFactory; 
publicclass HelloWorld { 
  publicstatic void main(String[] args) { 
   Logger log = LoggerFactory.getLogger(HelloWorld.class); 
   log.info("Hello World"); 
  
}
所有其余需要做的就是写一个用来控制日志输出的配置文件


配置文件在log4j里通常叫做log4j.xml,

在logback里是logback.xml,或者,在测试环境里叫做logback-test.xml。

在Maven project里,

logback.xml文件必须放在$PROJECT_HOME/src/main/resources目录中。

logback-test.xml文件必须放在$PROJECT_HOME/src/test/resources目录中。

简单的配置文件可以象这样来写:

?
1
2
3
4
5
6
7
8
9
10
11
12
<configuration
 <appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender"
  <!-- encoders are assigned the type 
     ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
  <encoder
   <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern
  </encoder
 </appender
 <rootlevel="debug"
  <appender-refref="STDOUT"/> 
 </root
</configuration>
logback完整的手册 非常详尽,可到这里来阅读
0 0
原创粉丝点击