由Sun提供的JDK内的写日志的方案一直无法全面推广。造成这种情况的原因当然是其缺乏可配置性和灵活性。JDK的日志方案对于比较简单的项目来讲当然是一种解决办法,但对于企业级的应用来讲就不然了。
谈到在Java应用程序里写日志,log4j过去是现在可能仍然是事实上的标准。
由Sun提供的JDK内的写日志的方案一直无法全面推广。造成这种情况的原因当然是其缺乏可配置性和灵活性。JDK的日志方案对于比较简单的项目来讲当然是一种解决办法,但对于企业级的应用来讲就不然了。
现在,除了log4j之外,另有一种新的比log4j更强大、更快和更灵活的实现已经上市了:logback。好吧,实际上logback是始于2006年的,但其版本1.0在2011年11月份才发布。
logback开发出来就是为了替代log4j的,它和log4j都是出自同一个开发者。版本1.0经过多年的测试和开发现已可供使用了(最新版本 是1.0.1)。为了避免由于其版本号这么小而造成误解,应该指出的是,logback已经在业界使用多年了,总之其版本号绝不是反映其稳定性和功能性方 面的声明。
logback同log4j相比具有众多优势。下面列出一部分:
·更快的实现
·自动重新装载日志配置文件
·更好的过滤器(filter)
·自动压缩归档的日志文件
·堆栈跟踪里包括了Java包(jar文件)的信息
·自动删除旧日志归档文件
对于开发者来讲,从log4j转换到logback非常容易。只要在你的Maven POM中转换一个依赖就算准备好了:
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- <version>1.0.0</version>
- </dependency>
由于传递性依赖,日志facace,slf4j,也已经添加到你的project中了。
用slf4j做个“Hello World”例子,就象这样:
- package demo;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class HelloWorld {
- public static void main(String[] args) {
- Logger log = LoggerFactory.getLogger(HelloWorld.class);
- log.info("Hello World");
- }
- }
所有其余需要做的就是写一个用来控制日志输出的配置文件。
配置文件在log4j里通常叫做log4j.xml,在logback里是logback.xml,或者,在测试环境里叫做logback-test.xml。
在Maven project里,logback.xml文件必须放在$PROJECT_HOME/src/main/resources目录中。logback-test.xml文件必须放在$PROJECT_HOME/src/test/resources目录中。简单的配置文件可以象这样来写:
- <configuration>
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <!-- encoders are assigned the type
- ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
- <encoder>
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
- </encoder>
- </appender>
- <root level="debug">
- <appender-ref ref="STDOUT" />
- </root>
- </configuration>
logback完整的手册 非常详尽,可到这里来阅读。
原文链接:http://www.oschina.net/translate/logging-in-java-switching-to-logback
相关推荐
谈到在Java应用程序里写日志,log4j过去是现在可能仍然是事实上的标准。 由Sun提供的JDK内的写日志的方案一直无法全面推广。造成这种情况的原因当然是其缺乏可配置性和灵活性。JDK的日志方案对于比较简单的项目...
本文将深入探讨三个重要的Java日志框架——Log4j、Logback和SLF4J,并分析它们之间的关系和使用场景。 **Log4j** Log4j是Apache组织的一个开源项目,是Java世界中最先广泛使用的日志记录框架之一。它的核心功能...
Logback+SLF4J是Java日志框架的高级组合,提供高效、灵活的日志记录功能。SLF4J(Simple Logging Facade for Java)是一个日志抽象层,允许开发者在运行时插入任意日志实现,而Logback是SLF4J的一个具体实现,它在...
SLF4J(Simple Logging Facade for Java)是Java日志记录的一个接口层,它为各种日志框架,如Log4j、Java Util Logging、Logback等,提供了一个统一的API。SLF4J的设计目的是使得应用程序能够在部署时选择合适的日志...
SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它提供了一个简单的API,允许开发者在应用程序中使用各种日志框架,如Log4j、Logback等,而无需直接依赖特定的日志实现。SLF4J 1.7是其的一个...
SLF4J(Simple Logging Facade for Java)是一个用于各种日志框架的简单抽象,例如java.util.logging,Logback和Log4j。它的主要目的是为应用程序提供一个可以在部署时插拔的日志API,允许最终用户在部署时选择所需...
##### 2.2 是否应该迁移到SLF4J + Logback 对于大多数应用场景而言,是否迁移至SLF4J + Logback取决于多个因素: - **性能需求**:如果应用程序对日志系统的性能有较高要求,那么采用Logback可以带来显著的性能...
7. **迁移友好**:通过 SLF4J,可以轻松地将现有的 JUL、JCL 或 log4j 日志调用迁移到 LogBack,无需更改一行代码。只需使用适当的桥接器,LogBack 就能接管这些日志系统。 8. **API 简洁性**:LogBack 的 API 设计...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个接口层,它为各种日志实现提供了一个统一的API,如Log4j、java.util.logging、Logback等。选择SLF4J而非直接使用Log4J的原因主要在于以下几个方面: 1...
SLF4J(Simple Logging Facade for Java)是Java日志记录的一个接口层,它为各种日志框架,如Log4j、Java Util Logging、Logback等,提供了一个抽象层。`slf4j-api-1.7.25`是SLF4J API的一个版本,其中`1.7.25`代表...
适配器的工作原理是将旧的日志API调用重定向到SLF4J接口,从而实现了无缝迁移。 归档文件"slf4j-1.5.6"可能包含以下组成部分: 1. **slf4j-api-1.5.6.jar**:SLF4J的核心API,包含了所有用于日志记录的接口和辅助...
SLF4J(Simple Logging Facade for Java)是Java日志记录的一个接口层,它为各种日志框架提供了一个统一的API,如Log4j、java.util.logging、Logback等。这个`slf4j-1.7.16.zip`文件包含的是SLF4J的1.7.16版本的源码...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个接口层,它为各种日志实现提供了一个统一的API,使得开发者能够在不修改代码的情况下切换不同的日志实现,如Log4j、Logback等。这个"slf4j-1.5.8.rar...
标题 "commons-logging 与 slf4j的桥接器" 涉及到的是Java日志框架中的两个重要组件,以及它们之间的交互。这里主要讨论的是如何将Apache Commons Logging(简称commons-logging)与Simple Logging Facade for Java...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个接口层,它为各种日志实现提供了一个统一的API,如Log4j、Java Util Logging、Logback等。这个版本“slf4j-1.5.8”是SLF4J的一个历史发行版,下面将...
SLF4J(Simple Logging Facade for Java)是Java中一个流行的日志抽象层,它为各种日志框架,如Log4j、java.util.logging、Logback等提供了一个统一的接口。SLF4J-Migrator是一个实用工具,用于帮助开发者从其他日志...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个接口层,它为各种日志实现提供了一个统一的API,比如Log4j、java.util.logging、Logback等。这个版本是SLF4J的1.5.8版,尽管较旧,但仍然包含了许多...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个接口层,它为各种日志实现提供了一个统一的API,如Log4j、java.util.logging、Logback等。`slf4j-1.6.4.tar.gz`是一个压缩包文件,包含了SLF4J版本...
2. **易于迁移**:由于SLF4J是一个抽象层,因此当需要更换日志实现时,只需更改配置即可,无需修改业务代码。 3. **简化代码**:SLF4J提供了一致的日志记录API,使得开发者无需关注具体实现细节。 4. **性能优化**:...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个接口层,它为各种日志实现提供了一个统一的API,如Log4j、java.util.logging、Logback等。这个压缩包“slf4j-1.5.2.rar”包含的是SLF4J的1.5.2版本,这...