前面讲的 SLF4J 的用法之一是 SLF4J+Log4J,而这里要推出的组合是 SLF4J+LogBack。不用 Log4J?难道还有比 Log4J 更好的日志实现吗?是的,答案就是 LogBack。假如你知道 LogBack 和 Log4J 是同出一位大师之手,你就不会觉得惊讶了。LogBack 对 Log4J 进行了增强,并投入了 SLF4J 的怀抱,它还被作者认定为 Log4J 的继任者。
为什么叫做 Logback,我就不知道了,反正不要叫做 Brokeback 就行。这里是推崇用 Logback 替代 Log4J 的十几个理由:Reasons to prefer logback over log4j,说的大至是更快;好测试;与 SLF4J 关系紧;文档丰富;能自动加载配置文件;多个 JVM 写一个日志文件,或其他 I/O 错误时不影响程序执行;配置文件中加入条件控制;强大的日志过滤;更强的日志切分功能;自动压缩、删除日志文件;异常栈中更多的数据信息。
Logback 分为三个模块:logback-core,logback-classic,logback-access。logback-core 是核心;logback-classic 改善了 log4j,且自身实现了 SLF4J API,所以即使用 Logback 你仍然可以使用其他的日志实现,如原始的 Log4J,java.util.logging 等;logback-access 让你方便的访问日志信息,如通过 http 的方式。
还得提一点,Logback 能更好的放到 OSGI 环境中。好了,简单绍完了 Logback,就来看看具体怎么用它。
需要的配置文件和组件包,下面三个 jar 文件和一个 xml文件都是要放在项目的 ClassPath 上。
1. slf4j-api-1.5.11.jar
2. logback-core-0.9.20.jar
3. logback-classic-0.9.20.jar
4. logback.xml 或 logback-test.xml (类似于 log4j.properties/log4j.xml)
前一个包在 http://www.slf4j.org/download.html 处下载,第二第三个包在 http://logback.qos.ch/download.html 下载,可能包文件名中的版本号有些差,不要紧。由于这里不演示 HTTP 访问日志信息,所以不需要用到 logback-access-0.9.20.jar。
Logback 先找 logback-test.xml,没有则找 logback.xml 文件,都找不到就使用 BasicConfigurator 基本配置,BasicConfigurator 就是相当于等会贴出的 logback.xml 文件内容的配置。这里我们用 logback.xml 配置文件,以前的 log4j.properties 文件可以用 PropertiesTranslator 转换成 logback.xml 文件内容。
下面是一个最简单的 logback.xml 文件内容
view source
print?
01.<?xml version="1.0" encoding="UTF-8"?>
02.<configuration>
03. <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
04. <encoder charset="GBK">
05. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
06. </encoder>
07. </appender>
08.
09. <root level="DEBUG">
10. <appender-ref ref="stdout" />
11. </root>
12.</configuration>
在 log4j.xml 能做的配置,logback.xml 中也能做到,而且还增强了诸如 <if><then><else>、<filter>、<sift> 等更强的控制,请参考 logback 的手册 http://logback.qos.ch/manual/index.html。
使用 Logback 的代码
view source
print?
01.package com.unmi;
02.
03.import org.slf4j.Logger;
04.import org.slf4j.LoggerFactory;
05.
06.public class TestLogback {
07. private static final Logger logger = LoggerFactory.getLogger(TestLogback.class);
08.
09. public static void main(String[] args) {
10. logger.info("Hello {}","TestLogback");
11. }
12.}
可以看到与使用 SLF4J 的代码没有任何区别,因为本来用的通用日志框架就是 SLF4J,说到底,这里的 Logback 就相当于 SLF4J+Log4J 使用方式中的 Log4J 绑定和 Log4J 的功能。
执行上面的代码,输出:
21:38:43.031 [main] INFO com.unmi.TestLogback - Hello TestLogback
还是和上次一样,这里就拿 SLF4J+Logback 和 SLF4J+Log4J 两种方式作下比较:
SLF4J+Logback 组合 对比 SLF4J+Log4J 组合
slf4j-api-1.5.11.jar 一样的,定义高层 API slf4j-api-1.5.11.jar
logback-classic-0.9.20.jar 都是用绑定,
左边这里用作
Logback 绑定 slf4j-log4j12-1.5.11.jar
logback-classic-0.9.20.jar 左边这里用作
日志实现 log4j-1.2.15.jar
logback-test.xml/logback.xml 相当,logback 增加
了 log4j log4j.properties/log4j.xml
程序代码中:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Logger logger = LoggerFactory.getLogger(TestSlf4j.class);
logger.info("Hello {}","SLF4J"); 完全一样,实质上只是
SLF4J API
侵入到了应用组件
中了,与 Logback
没有关系。 程序代码中:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Logger logger = LoggerFactory.getLogger(TestLogback.class);
logger.info("Hello {}","Logback");
通过上面我们更清楚的发现,SLF4J+Logback 这样的组合与 SLF4J+Log4J 这样的用法其实没有什么差异。SLF4J 在使用其他日志实现框架的时候都是 SLF4J+相应绑定+日志实现,这里缩写成的 SLF4J+Log4J,中间是有一个 SLF4J 到 Log4J 的绑定的。完整表述它们就是:
SLF4J+Log4J 的方式: slf4j-api-1.5.11.jar + slf4j-log4j12-1.5.11.jar + log4j-1.2.15.jar
SLF4J+Logback 的方式:slf4j-api-1.5.11.jar + logback-classic-0.9.20.jar + logback-classic-0.9.20 前一个 logback-classic-0.9.20.jar 是作为绑定用的,后一个是作为日志实现用的,也就是 logback-classic-0.9.20.jar 把前面的 slf4j-log4j12-1.5.11.jar 和 log4j-1.2.15.jar 两个包的功能揉合在了一起。
搞明白了 Logback 在其中所担当的角色后,我们就知道,说使用了 Logback 应用组件,实际它们所用的统一日志组件只是 SLF4J。也可以说 Logback 就是 Log4J 那样,只是自身带了绑定的日志实现。
在 Logback 官方首页 http://logback.qos.ch/ 面中可以看到使用了 Logback 的项目。
分享到:
相关推荐
https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback上的jar与源码,网络不好,下载不易,特此分享。包括: logback-1.2.3.zip Tomcat7.0.82\tomcat-juli-7.0.82-slf4j-1.7.25-logback-1.2.3.zip Tomcat...
janino-2.3.17.jar jcl-over-slf4j-1.6.1.jar log4j-1.2.8.jar logback-access-0.9.24.jar logback-classic-0.9.24.jar logback-core-0.9.24.jar ... slf4j-1.6.1+logback-0.9.24.rar slf4j-api-1.6.1.jar
logback+slf4j 异步日志输出到不同级别的文件-配置文件,下载即可使用。结合lombok【@slf4j】即可方便愉快的输出日志了 666
log4j-slf4j+logback1.3.0 共六个jar包
slf4j-1.7.25jar包+logback-1.2.3jar包 slf4j-1.7.25jar包+logback-1.2.3jar包
slf4j-1.6.1+logback-0.9.24
只要里面的logback-classic-1.1.7,logback-core-1.1.7,slf4j-api-1.7.21的JAR就可以打印出日志信息,而带有source表示对应的JAR包的源代码。可以要也可以不要
logback+slf4j自定义appender输出的使用方法,让你明白什么是自定义输出意思使用方式。
commons-logging-1.2.jar、log4j-1.2.17.jar、logback-classic-1.1.2.jar、logback-core-1.1.2.jar、slf4j-api-1.7.12.jar、slf4j-jcl-1.7.12.jar、slf4j-simple-1.7.12.jar
Slf4j+logback实现logback测试,Slf4j+logback实现logback测试
springMvc mybaties slf4j所需包
NULL 博文链接:https://xiayingjie.iteye.com/blog/828498
本资源为ssm + shiro学习记录,分享交流 ssm +shiro+slf4j+logback+ajax 学习记录
logback + slf4j web项目源码,同时包含一些常用的json和xml互相转化 ,以及json与bean互相转化实例
slf4j+logback需要的jar和配置文件,下载之后可以直接使用
最新的slf4j-1.7.6+logback-1.1.1,压缩包里面全套的源码和class都有的jar
Tomcat SLF4J Logback是tomcat的替代产品,它允许所有内部日志记录全部使用我们喜欢的slf4j / logback库。 注意 从logback 1.1.7开始,不再需要在server.xml中包含${catalina.home}来进行logback访问。 我们还重新...
用于sl4j + logback的gcloud-logging json日志附加程序 ... compile ' com.github.ankurcha:google-cloud-logging-logback-slf4j:LATEST ' } 或Maven pom.xml : < groupId>com.github.ankurcha</ group
spring mvc 所需日志jar logback slf4j
Logback+slf4j【进阶】【实例】.docx