轉載 http://feitianbenyue.iteye.com/blog/1882887
背景:
一直以來,項目都是使用log4j+slf4j的方案來做日志, 最近看到 logback的文章,優點多多,手癢不已
注:閱讀此文,需要有一定的log 日志基礎
logback介紹:
首先logback,log4j,slf4j的作者是同一個人 ,java界鼎鼎大名的 Ceki Gülcü,logback為取代log4j而生,而log4j基本停止維護
logback優點:
logback缺點:
- 1. 編寫logback.xml 沒有提示
由于logback的靈活性,沒有tld/schema規范文件,導致編寫沒有提示,增
配置方法:
1. logbak+slf4j 項目中 java類里面的代碼的寫法和 log4j+slf4j的 代碼寫法完全一模一樣的
Java代碼

- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
-
- /**
- *這個類提供了一些根據類的class文件位置來定位的方法。
- *
- * @author <a href="mailto:venusdrogon@163.com">金鑫</a>
- * @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 依賴
比如
Xml代碼

- <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 依賴
Xml代碼

- <!--******** 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下

Xml代碼

- <?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