转自http://www.cnblogs.com/yuanermen/archive/2012/02/13/2348942.html
一、logback的介绍
Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。 Logback是要与SLF4J结合起来用两个组件的官方网站如下:
logback的官方网站: http://logback.qos.ch
SLF4J的官方网站:http://www.slf4j.org
本文章用到的组件如下:请自行到官方网站下载!
logback-access-1.0.0.jar
logback-classic-1.0.0.jar
logback-core-1.0.0.jar
slf4j-api-1.6.0.jar
maven配置
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.0.11</version> </dependency>
这样依赖包全部自动下载了!
二、logback取代 log4j的理由:
Logback和log4j是非常相似的,如果你对log4j很熟悉,那对logback很快就会得心应手。下面列了logback相对于log4j的一些优点:
1、更快的实现 Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小了。
2、非常充分的测试 Logback经过了几年,数不清小时的测试。Logback的测试完全不同级别的。在作者的观点,这是简单重要的原因选择logback而不是log4j。
3、Logback-classic非常自然实现了SLF4j Logback-classic实现了 SLF4j。在使用SLF4j中,你都感觉不到logback-classic。而且因为logback-classic非常自然地实现了SLF4J, 所 以切换到log4j或者其他,非常容易,只需要提供成另一个jar包就OK,根本不需要去动那些通过SLF4JAPI实现的代码。
4、非常充分的文档 官方网站有两百多页的文档。
5、自动重新加载配置文件 当配置文件修改了,Logback-classic能自动重新加载配置文件。扫描过程快且安全,它并不需要另外创建一个扫描线程。这个技术充分保证了应用程序能跑得很欢在JEE环境里面。
6、Lilith Lilith是log事件的观察者,和log4j的chainsaw类似。而lilith还能处理大数量的log数据 。
7、谨慎的模式和非常友好的恢复 在谨慎模式下,多个FileAppender实例跑在多个JVM下,能 够安全地写道同一个日志文件。RollingFileAppender会有些限制。Logback的FileAppender和它的子类包括 RollingFileAppender能够非常友好地从I/O异常中恢复。
8、配置文件可以处理不同的情况 开发人员经常需要判断不同的Logback配置文件在不同的环境下(开发,测试,生产)。而这些配置文件仅仅只有一些很小的不同,可以通过,和来实现,这样一个配置文件就可以适应多个环境。
9、Filters(过滤器) 有些时候,需要诊断一个问题,需要打出日志。在log4j,只有降低日志级别,不过这样会打出大量的日志,会影响应用性能。在Logback,你可以继续 保持那个日志级别而除掉某种特殊情况,如alice这个用户登录,她的日志将打在DEBUG级别而其他用户可以继续打在WARN级别。要实现这个功能只需 加4行XML配置。可以参考MDCFIlter 。
10、SiftingAppender(一个非常多功能的Appender) 它可以用来分割日志文件根据任何一个给定的运行参数。如,SiftingAppender能够区别日志事件跟进用户的Session,然后每个用户会有一个日志文件。
11、自动压缩已经打出来的log RollingFileAppender在产生新文件的时候,会自动压缩已经打出来的日志文件。压缩是个异步过程,所以甚至对于大的日志文件,在压缩过程中应用不会受任何影响。
12、堆栈树带有包版本 Logback在打出堆栈树日志时,会带上包的数据。
13、自动去除旧的日志文件 通过设置TimeBasedRollingPolicy或者SizeAndTimeBasedFNATP的maxHistory属性,你可以控制已经产生日志文件的最大数量。如果设置maxHistory 12,那那些log文件超过12个月的都会被自动移除。
总之,logback比log4j太优秀了,让我们的应用全部建立logback上吧 !
三、Logback的配置介绍
1、Logger、appender及layout
Logger作为日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。
Appender主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、 MySQL、 PostreSQL、 Oracle和其他数据库、 JMS和远程UNIX Syslog守护进程等。
Layout 负责把事件转换成字符串,格式化的日志信息的输出。
2、logger context
各个logger 都被关联到一个 LoggerContext,LoggerContext负责制造logger,也负责以树结构排列各 logger。其他所有logger也通过org.slf4j.LoggerFactory 类的静态方法getLogger取得。 getLogger方法以 logger 名称为参数。用同一名字调用LoggerFactory.getLogger 方法所得到的永远都是同一个logger对象的引用。
3、有效级别及级别的继承
Logger 可以被分配级别。级别包括:TRACE、DEBUG、INFO、WARN 和 ERROR,定义于 ch.qos.logback.classic.Level类。如果 logger没有被分配级别,那么它将从有被分配级别的最近的祖先那里继承级别。root logger 默认级别是 DEBUG。
4、打印方法与基本的选择规则
打印方法决定记录请求的级别。例如,如果 L 是一个 logger 实例,那么,语句 L.info("..")是一条级别为 INFO 的记录语句。记录请求的级别在高于或等于其 logger 的有效级别时被称为被启用,否则,称为被禁用。记录请求级别为 p,其 logger的有效级别为 q,只有则当 p>=q时,该请求才会被执行。
该规则是 logback 的核心。级别排序为: TRACE < DEBUG < INFO < WARN < ERROR。
四、Logback的默认配置
如果配置文件 logback-test.xml 和 logback.xml 都不存在,那么 logback 默认地会调用BasicConfigurator ,创建一个最小化配置。最小化配置由一个关联到根 logger 的ConsoleAppender 组成。输出用模式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 的 PatternLayoutEncoder 进行格式化。root logger 默认级别是 DEBUG。
1、Logback的配置文件
Logback 配置文件的语法非常灵活。正因为灵活,所以无法用 DTD 或 XML schema 进行定义。尽管如此,可以这样描述配置文件的基本结构:以<configuration>开头,后面有零个或多个<appender>元素,有零个或多个<logger>元素,有最多一个<root>元素。
2、Logback默认配置的步骤
(1). 尝试在 classpath 下查找文件 logback-test.xml;
(2). 如果文件不存在,则查找文件 logback.xml;
(3). 如果两个文件都不存在,logback 用 Bas icConfigurator 自动对自己进行配置,这会导致记录输出到控制台。
3、Logback.xml 文件
<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright 2010-2011 The myBatis Team Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <configuration debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_HOME" value="/home" /> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!-- show parameters for hibernate sql 专为 Hibernate 定制 --> <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" /> <logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" /> <logger name="org.hibernate.SQL" level="DEBUG" /> <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" /> <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" /> <!--myibatis log configure--> <logger name="com.apache.ibatis" level="TRACE"/> <logger name="java.sql.Connection" level="DEBUG"/> <logger name="java.sql.Statement" level="DEBUG"/> <logger name="java.sql.PreparedStatement" level="DEBUG"/> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> <!--日志异步到数据库 --> <appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> <!--日志异步到数据库 --> <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> <!--连接池 --> <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"> <driverClass>com.mysql.jdbc.Driver</driverClass> <url>jdbc:mysql://127.0.0.1:3306/databaseName</url> <user>root</user> <password>root</password> </dataSource> </connectionSource> </appender> </configuration>
五、在程序用引用Logback
package com.stu.system.action; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class BlogAction{ //定义一个全局的记录器,通过LoggerFactory获取 private final static Logger logger = LoggerFactory.getLogger(BlogAction.class); /** * @param args */ public static void main(String[] args) { logger.info("logback 成功了"); logger.error("logback 成功了"); } }
相关推荐
"logback-slf4j日志配置文件下载即可使用" logback-slf4j是Java领域中一种常用的日志记录解决方案,它通过结合slf4j(Simple Logging Facade for Java)来提供了异步日志输出的功能,能够将日志输出到不同的文件中...
本文详细介绍了 logback 日志配置的基本原理和具体实现方法,包括必要的依赖包、XML 配置文件的结构及各个元素的作用。通过对控制台输出、文件输出以及特殊场景下的日志配置进行细致分析,可以帮助开发者更好地理解...
在这里,我们关注的是SLF4J的API库`slf4j-api-1.7.26.jar`,以及Logback的两个核心组件`logback-core-1.2.3.jar`和`logback-classic-1.2.3.jar`,以及配置文件`logback.xml`。 首先,`slf4j-api-1.7.26.jar`是SLF4J...
日志切面(Aspect)通常使用Spring AOP实现,通过注解如`@Aspect`和`@Around`,可以在方法调用前后插入日志记录代码。例如,我们可以创建一个切面,针对所有带有`@Service`注解的类进行日志拦截,记录方法的执行时间...
本文将详细介绍如何在SpringBoot项目中集成Shiro实现简单的用户登录功能,并利用Logback进行日志记录。 首先,我们来看Shiro的登录实现。Shiro的核心组件包括Subject、SecurityManager、Realm等。Subject代表当前...
在Spring Boot中,我们通常通过`application.properties`或`application.yml`配置日志级别和输出位置,但更复杂的配置则需要使用Logback的配置文件`logback.xml`。这个文件应放置在`src/main/resources`目录下,...
Logback的日志配置文件通常为logback.xml或logback-spring.xml,而logback.xml在Spring Boot的加载机制中会优先于application.yml,这就导致了在Spring Boot环境下,logback.xml中无法直接使用application.yml定义的...
在 `logback.xml` 文件中,你可以看到配置了不同级别的 Appender,以及如何使用 MDC(Mapped Diagnostic Context)来区分日志。MDC 是一个线程绑定的映射,可以存储诊断信息,例如用户 ID 或请求 ID。 在 Java 类中...
《Logback配置文件根据LEVEL级别将日志分类保存到不同文件》 日志管理是软件开发中的重要一环,它能帮助开发者追踪程序运行状态,定位问题,优化性能。Logback是一个广泛使用的日志框架,它允许我们高效地处理日志...
5. **日志级别与过滤**:在`logback.xml`配置文件中,可以设置不同级别的日志(如DEBUG、INFO、WARN、ERROR等),并可以使用过滤器(filter)来决定哪些日志应发送到Kafka,哪些不发送。 6. **性能优化**:考虑到...
Logback 是一个在Java开发中广泛使用的日志记录框架,由Ceki Gülcü创造,作为Log4j的后续项目。它提供了灵活且高效的日志记录解决方案,支持多种日志级别,如DEBUG、INFO、WARN、ERROR和FATAL,以及自定义级别。...
在给定的压缩包中,"log4j.doc"和"logback配置.docx"很可能是两份文档,详细介绍了如何配置和使用这两个框架。"logback-1.2.3.zip"是Logback的一个版本包,其中可能包含了库文件和其他相关资源,开发者可以解压后...
通过以上介绍,我们对 Logback 的使用方式有了基本了解。在实际应用中,你可以根据项目需求调整配置,实现定制化的日志记录和管理。在提供的 `LogbackTest` 文件中,可能包含了一些示例代码,可以进一步学习如何在...
2. `logback-core-xxxx.jar`:这是 Logback 的核心组件,负责日志的输出和管理。 3. `logback-classic-xxxx.jar`:这个 JAR 包实现了 SLF4J API,并且改进了 Log4j,使得你可以使用 Logback 而依然保持对其他日志...
logback 是由 log4j 创始人设计的另一个开源日志组件,它当前分为三个模块:logback-core、logback-classic 和 logback-access。logback-classic 是 log4j 的一个改良版本,同时它完整实现了 slf4j API,使你可以很...
总结起来,JAVA日志组件logback 1.0.13和SLF4J 1.7.5提供了一个强大且灵活的日志解决方案,它们允许开发者以统一的方式编写日志代码,并能够方便地切换到其他日志实现。SLF4J的接口设计使得日志框架的选择变得独立于...
总的来说,logback 1.1.2 配置案例涵盖了日志框架的核心组件、配置文件的结构以及如何在代码中使用日志API。理解这些知识有助于优化日志系统,提升应用的可维护性和调试效率。通过适当配置,logback 可以满足不同...
`logback-core-1.2.3.jar` 则是Logback的基础组件,包含日志事件的处理、配置解析以及Appender和Layout等核心功能。它是Logback-classic的基础,提供了日志系统的核心实现。 `logback.xml` 是Logback的配置文件,这...
Logback是由log4j创始人设计的另一个开源日志组件,基于slf4j的日志规范实现的框架,性能比log4j要好。 Logback主要分为三个技术模块: logback-core:该模块为其他两个模块奠定了基础。 logback-classic:是log4j...
本文将详细介绍几个常见的Java日志组件,包括它们的特点、使用场景和配置方法。 首先,让我们来看一下`log4j`。它是Apache组织的一个开源项目,广泛应用于Java应用程序中。Log4j提供了丰富的日志级别(如DEBUG, ...