关闭

Java日志:迁移到Logback和SLF4J

发表于:2013-2-22 09:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  谈到在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. <dependency>     
  2.     <groupId>ch.qos.logback</groupId>     
  3.     <artifactId>logback-classic</artifactId>     
  4.     <version>1.0.0</version>     
  5.  </dependency>

  由于传递性依赖,日志facace,slf4j,也已经添加到你的project中了。

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

  1. package demo;   
  2. import org.slf4j.Logger;   
  3. import org.slf4j.LoggerFactory;   
  4. public class HelloWorld {   
  5.   public static void main(String[] args) {   
  6.    Logger log = LoggerFactory.getLogger(HelloWorld.class);   
  7.    log.info("Hello World");   
  8.   }   
  9. }

  所有其余需要做的就是写一个用来控制日志输出的配置文件。

  配置文件在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. <configuration>   
  2.  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">   
  3.   <!-- encoders are assigned the type   
  4.      ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->   
  5.   <encoder>   
  6.    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>   
  7.   </encoder>   
  8.  </appender>   
  9.  <root level="debug">   
  10.   <appender-ref ref="STDOUT" />   
  11.  </root>   
  12. </configuration>

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号