【飞天奔月出品】一步一步升级配置11: 使用logback+slf4j 替换log4j+slf4j

背景:

   一直以来,项目都是使用log4j+slf4j的方案来做日志, 最近看到 logback的文章,优点多多,手痒不已

:阅读此文,需要有一定的log 日志基础

logback介绍:

 首先logback,log4j,slf4j的作者是同一个人 ,java界鼎鼎大名的 Ceki Gülcü,logback为取代log4j而生,而log4j基本停止维护

logback优点:

logback缺点:

  • 1.    编写logback.xml 没有提示
    由于logback的灵活性,没有tld/schema规范文件,导致编写没有提示,增

配置方法: 

1.  logback+slf4j 项目中 java类里面的代码的写法和 log4j+slf4j的 代码写法完全一模一样的

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
/**
 *这个类提供了一些根据类的class文件位置来定位的方法。
 *
 * @version 1.0 2011-4-27 上午12:40:08
 * @since 1.0
 */
public class ClassLoaderUtil{
 
   private final static Logger log   = LoggerFactory.getLogger(ClassLoaderUtil.class);

 

 

slf4j的切面日志功能功不可没,代码中可以忽略logback或者 log4j 的存在

 

2.   去掉 maven pom.xml 所有直接/间接的 log4j 依赖

比如

   

<dependency>
        <groupId>loxia2</groupId>
        <artifactId>loxia2-support</artifactId>
        <version>${version.loxia}</version>
        <exclusions>
           <exclusion>
              <artifactId>slf4j-log4j12</artifactId>
              <groupId>org.slf4j</groupId>
           </exclusion>
           <exclusion>
              <artifactId>slf4j-api</artifactId>
              <groupId>org.slf4j</groupId>
           </exclusion>
        </exclusions>
      </dependency>

 

3.   去掉 maven pom.xml 所有直接/间接的 slf4j-log4j12 依赖

如上面的 exclusion

4.  增加 logback 依赖

    

<!--******** logback and slf4j ******** -->
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${version.logback}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${version.logback}</version>
      </dependency>
 
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-access</artifactId>
        <version>${version.logback}</version>
      </dependency>
 
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${version.slf4j}</version>
      </dependency>
 
      <!--jul桥接 用来输出 Java Logging Framework (JUL) -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>${version.slf4j}</version>
      </dependency>
 
      <!-- jcl桥接,用来输出 第三方Jakarta Commons Logging (JCL) -->
      <dependency>
         <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${version.slf4j}</version>
      </dependency>

 

 

5.   增加 logback.xml到 classpath下


【飞天奔月出品】一步一步升级配置11: 使用logback+slf4j 替换log4j+slf4j

 

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 
   <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>DEBUG</level>
      </filter>
 
      <!-- 注意 logback 的括号需要转义 -->
      <encoder charset="UTF-8" class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>%d{MMdd HH:mm:ss} %-5level \(%F:%L\) %method\(\) - %m%n
        </pattern>
      </encoder>
   </appender>
   <root>
      <appender-ref ref="CONSOLE" />
      <level value="DEBUG" />
   </root>
</configuration>

配置完,启动程序,可以看到 日志输出和原先 log4j 基本上一样

 

参考文章:

1.     从Log4j迁移到LogBack的理由
http://www.oschina.net/translate/reasons-to-prefer-logbak-over-log4j

2.     日志组件logback的介绍及配置使用方法
http://www.cnblogs.com/yuanermen/archive/2012/02/13/2348942.html

相关推荐