【飞天奔月出品】一步一步升级配置11: 使用logback+slf4j 替换log4j+slf4j
背景:
一直以来,项目都是使用log4j+slf4j的方案来做日志, 最近看到 logback的文章,优点多多,手痒不已
注:阅读此文,需要有一定的log 日志基础
logback介绍:
首先logback,log4j,slf4j的作者是同一个人 ,java界鼎鼎大名的 Ceki Gülcü,logback为取代log4j而生,而log4j基本停止维护
logback优点:
- 1. 更快
- 2. 提供独特而实用特性
- 3. 其他
参考:http://www.oschina.net/translate/reasons-to-prefer-logbak-over-log4j
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下
<?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
相关推荐
chw0 2020-11-04
MrLiar 2020-05-14
sdaq 2020-05-11
JavaWinner 2020-03-04
丨Fanny丨Cri 2020-02-23
MrLiar 2020-02-16
丨Fanny丨Cri 2020-02-01
sdaq 2020-01-19
zhangxiaocc 2020-02-23
sdaq 2020-01-10
dxyadc 2020-01-08
wangruiling 2020-01-07
itmale 2020-01-06
方志朋 2020-01-04
sdaq 2019-12-28
wangruiling 2014-05-18
dongxurr 2019-12-27
JavaWinner 2019-12-12