前 面讲的 SLF4J 的用法之一是 SLF4J+Log4J,而这里要推出的组合是 SLF4J+LogBack。不用 Log4J?难道还有比 Log4J 更好的日志实现吗?是的,答案就是 LogBack。假如你知道 LogBack 和 Log4J 是同出一位大师之手,你就不会觉得惊讶了。LogBack 对 Log4J 进行了增强,并投入了 SLF4J 的怀抱,它还被作者认定为 Log4J 的继任者。
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 上。
slf4j-api-1.5.11.jar
logback-core-0.9.20.jar
logback-classic-0.9.20.jar
logback.xml 或 logback-test.xml (类似于 log4j.properties/log4j.xml)
Logback 先找 logback-test.xml,没有则找 logback.xml 文件,都找不到就使用 BasicConfigurator 基本配置,BasicConfigurator 就是相当于等会贴出的 logback.xml 文件内容的配置。这里我们用 logback.xml 配置文件,以前的 log4j.properties 文件可以用 PropertiesTranslator 转换成 logback.xml 文件内容。
下面是一个最简单的 logback.xml 文件内容
- <?xml version="1.0" encoding="UTF-8"?>
- <configuration>
- <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
- <encoder charset="GBK">
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
- </encoder>
- </appender>
- <root level="DEBUG">
- <appender-ref ref="stdout" />
- </root>
- </configuration>
在 log4j.xml 能做的配置,logback.xml 中也能做到,而且还增强了诸如 <if><then><else>、<filter>、<sift> 等更强的控制,请参考 logback 的手册 http://logback.qos.ch/manual/index.html。
使用 Logback 的代码
- package com.unmi;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class TestLogback {
- private static final Logger logger = LoggerFactory.getLogger(TestLogback.class);
- public static void main(String[] args) {
- logger.info("Hello {}","TestLogback");
- }
- }
可以看到与使用 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-core-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); |
完全一样,实质上只是 SLF4J API 侵入到了应用组件 中了,与 Logback 没有关系。 |
程序代码中: import org.slf4j.Logger; import org.slf4j.LoggerFactory; Logger logger = LoggerFactory.getLogger(TestLogback.class); |
通过上面我们更清楚的发现,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-core-0.9.20.jar + logback-classic-0.9.20 前一个 logback-core-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 的项目。
相关推荐
本文将深入探讨“日志4j(Log4j)、SLF4J(Simple Logging Facade for Java)和logback 1.3.0”这三者之间的关系以及它们在Java应用中的作用。 首先,Log4j是Apache软件基金会开发的一个流行的日志记录框架,它允许...
本文将深入探讨“调试日志之slf4j+logback”的主题,这两个组件是Java开发中的常见日志解决方案。 SLF4J(Simple Logging Facade for Java)是一个日志门面,它为各种日志框架提供了统一的接口,如Log4j、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...
【标题】"springMvc+mybaties+slf4j" 涉及的技术栈是企业级应用开发中常见的组合,主要包括Spring MVC、MyBatis和SLF4J。这三者分别是Spring框架的Web模块、轻量级持久层框架和日志门面。 【Spring MVC】是Spring...
以下是使用logback+slf4j自定义Appender的详细步骤: 1. **创建Appender类**:首先,你需要创建一个继承自`ch.qos.logback.core.AppenderBase<ILoggingEvent>`的类。在这个类中,你需要覆盖`append()`方法,该方法...
"Logback + SLF4J Web项目源码" 提示我们这是一个基于Logback和SLF4J的日志管理系统,用于web应用程序。Logback是Java平台上的一个日志框架,它是一个替代log4j的更高效、更灵活的工具。SLF4J(Simple Logging ...
logback-slf4j是Java领域中一种常用的日志记录解决方案,它通过结合slf4j(Simple Logging Facade for Java)来提供了异步日志输出的功能,能够将日志输出到不同的文件中。下面是logback-slf4j日志配置文件的详细...
SLF4J(Simple Logging Facade for Java)和Logback是Java日志处理的两个重要组件,它们在软件开发中广泛用于记录应用程序的运行时信息。SLF4J是一个日志门面,它提供了一个统一的接口,允许开发人员在运行时插入所...
### SLF4J与Logback:新一代日志系统的解析 #### 一、SLF4J:简化日志处理的新标准 SLF4J(Simple Logging Facade for Java)作为一个新兴的日志框架,由Ceki Gülcü开发,旨在提供一个简单而统一的日志接口,以...
在实际应用中,使用SLF4J+Logback可以实现灵活的日志管理。例如,可以通过以下步骤配置Logback: 1. 创建`logback.xml`配置文件,指定日志级别、输出位置、格式等。 2. 在项目中引入SLF4J的API和Logback实现的依赖...
这个"ssm +shiro+slf4j+logback 学习记录"的压缩包可能包含了一系列教程、示例代码和配置文件,帮助开发者学习如何在实际项目中整合这些技术,实现高效且安全的Web应用。通过学习和实践这些内容,你可以掌握现代Java...
在这个“slf4j+logback+springmvc+maven小例子”中,我们看到的是一个结合了这些技术的简单应用。Spring MVC是一个基于Spring框架的轻量级Web MVC框架,它简化了构建交互式、RESTful的Web应用的流程。Maven则是一个...
### SLF4J + Logback 快速上手教程 #### 一、SLF4J 简介 **SLF4J**(Simple Logging Facade for Java)是一种简单且高效的日志门面库,旨在为Java平台上的各种日志框架提供统一的API,从而简化日志记录的过程。通过...
只要里面的logback-classic-1.1.7,logback-core-1.1.7,slf4j-api-1.7.21的JAR就可以打印出日志信息,而带有source表示对应的JAR包的源代码。可以要也可以不要
总结来说,"logback+slf4j打印工具类"是一种在Java项目中实现日志记录的有效方式,通过SLF4J的简洁API和Logback的强大功能,可以轻松地定制日志记录策略,例如每天生成一个日志文件。这种工具类的使用,不仅提高了...
《基于SpringBoot的日志脱敏:Logback与Slf4j的实战应用》 在现代的软件开发中,日志系统是不可或缺的一部分,它为开发者提供了系统运行时的详细信息,帮助排查问题,优化性能。SpringBoot框架以其简洁的配置和强大...
总结来说,SLF4J+Logback是现代Java项目中的首选日志解决方案,因为它们提供了一种灵活、高性能的日志记录机制。然而,理解不同日志框架之间的差异和应用场景,可以帮助开发者根据项目需求做出最佳选择。在实际工作...
SLF4J(Simple Logging Facade for Java)和Logback是Java日志处理中的两个重要组件,它们在软件开发中广泛用于记录应用程序的运行时信息。SLF4J作为一个日志门面,提供了一种标准的接口,允许开发者在运行时插入...
通常,这包括`slf4j-api.jar`(SLF4J API)、`logback-classic.jar`(Logback经典实现,包含了SLF4J的适配器)和`logback-core.jar`(Logback核心库)。这些依赖可以通过Maven或Gradle等构建工具来管理。 接下来,...
SLF4J是一个抽象层,为各种日志框架提供了统一的API,如Logback、Log4j等。它的主要优点在于可以让你在不修改代码的情况下更换底层的日志框架,只需改变类路径上的绑定即可。SLF4J提供了丰富的日志级别,如DEBUG、...