最近才开始在项目中使用logback,因为它很轻易的满足了我的几个需求:
1. 配置简单,易于上手
2. 一个日志文件中只能某一个级别的日志
3. 一个类中可以指定多个不同的日志,并且生成的每个日志文件中只包含其本身的内容
4. 可以关闭或者打开某几个包的日志,并且可以设置不同的包使用不同的日志级别。
一、易用性
logback的易用性不用多讲,只需要通过下面两行就可以在console中输出日志:
- Logger debugLogger = LoggerFactory.getLogger(MyClass.class);
Logger debugLogger = LoggerFactory.getLogger(MyClass.class);
logger.info("This is a log");
程序运行时,logback会查找默认的配置文件logback.xml或者logback-test.xml文件,如果没有找到它就会使用默认的配置,将日志打印到console中。下面是一个简单配置文件(http://logback.qos.ch/manual/configuration.html):
01.<configuration> 02. 03. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 04. <!-- encoders are assigned the type 05. ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 06. <encoder> 07. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 08. </encoder> 09. </appender> 10. 11. <root level="debug"> 12. <appender-ref ref="STDOUT" /> 13. </root> 14.</configuration>
<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>
二、日志级别限制
在多数的Log工具中,级别是可以传递,例如如果指定了日志输出级别为DEBUG,那么INFO、ERROR级别的log也会出现在日志文件。这种默认给程序的调试带来了很多的麻烦。而在logback中可以通过appender中的filter来严格限制日志的输出级别:
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter>
上面的设置中只会在文件中出现级别为INFO的日志内容。
三、同一个类中包含不同的日志
有时候一个类中可能要求打印不同的日志信息,例如有的用来调试,有的用来记录程序运行中的某些参数的变化等等。这时候可以通过下面的语句声明不同的日志:
01.Logger debugLogger = LoggerFactory.getLogger(MyClass.class); 02.Logger monitorLogger = LoggerFactory.getLogger("monitor");
Logger debugLogger = LoggerFactory.getLogger(MyClass.class); Logger monitorLogger = LoggerFactory.getLogger("monitor");
然后在配置文件中分别指定不同的输出文件(debugLogger使用默认的配置):
01. <appender name="monitor" class="ch.qos.logback.core.rolling.RollingFileAppender"> 02. <File>${log.dir}/monitor.log</File> 03. <encoder> 04. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %m%n</pattern> 05. </encoder> 06. <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 07. <level>INFO</level> 08. </filter> 09. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 10. <fileNamePattern>${log.dir}/sensitive.log.%d{yyyy-MM-dd}</fileNamePattern> 11. </rollingPolicy> 12. </appender> 13. <logger name="monitor" additivity="false" level="INFO"> 14.<span style="white-space: pre;"> </span><appender-ref ref="monitor" /> 15.<span style="white-space: pre;"> </span></logger>
<appender name="monitor" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${log.dir}/monitor.log</File> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} : %m%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.dir}/sensitive.log.%d{yyyy-MM-dd}</fileNamePattern> </rollingPolicy> </appender> <logger name="monitor" additivity="false" level="INFO"> <appender-ref ref="monitor" /> </logger>
这里通过设置additivity="false"禁止monitor里的内容向上传递,否则会同时显示在默认的日志中。
四、精确控制日志的应用范围
在程序调试中,经常出现的情况是:错误只在某一个或者几个类或者包里,所以只需要打开这几个类或者包里的DEBUG级别的log。在以前的项目,使用Spring和Hibernate时,一旦打开DEBUG级别的log,程序本身的debug信息就会被Spring和Hibernate的大量日志淹没,大大降低了调试的效率。而logback让这一切变的简单起来了:
<logger name="org" level="ERROR" />
<logger name="org" level="ERROR" />
这一行就将org包下面的所有日志级别设为了ERROR,不会再打扰我们的DEBUG。
相关推荐
通过使用适当的桥接库,如 jcl104-over-slf4j.jar,可以轻松地将现有的JCL或log4j日志调用转换为SLF4J,从而方便地迁移到logback。 5. **JUL支持**:如果你的项目中已经使用了JUL,logback 也提供了直接支持,通过...
Logback 是一款广泛使用的日志记录框架,由 Ceki Gülcü 创建,作为其先前作品 Log4j 的改进版。这个压缩包包含了实现 Logback 功能所需的几个关键组件,以及一个配置文件,使得用户能够方便地管理和记录应用程序的...
总之,Spring Boot结合Logback提供了灵活而强大的日志配置能力,使得开发者可以轻松地为不同的环境定制日志输出,从而有效支持开发、测试和生产等环节的需要。通过正确地使用application.yml和logback-spring.xml...
Logback 是一个广泛使用的日志记录框架,由 Ceki Gülcü 创建,他是早期流行的日志框架 Log4j 的创始人。...在Java SE和Java EE项目中,logback是一个强大的选择,能够提供高效、可扩展且易于管理的日志解决方案。
Spring Boot 默认集成了 Logback,因此我们可以轻松地使用 Logback 实现日志管理。 配置 Logback 要使用 Logback,我们需要在项目中添加相关的依赖项。我们可以在 pom.xml 文件中添加以下依赖项: ``` <groupId>...
LogBack 是一个强大的日志框架,它在日志管理领域接替了早期的log4j,提供了更高效、更灵活的解决方案。LogBack 的设计哲学是"同样的基础架构,但做得更好",它不是一场革命,而是log4j的自然进化,强调更快的速度、...
这意味着使用logback可以轻松地与其他SLF4J兼容的日志框架集成。 3. 动态配置:logback提供动态配置功能,可以通过JMX(Java Management Extensions)接口在运行时调整日志级别,无需重启应用。 4. 分级日志记录:...
在IT行业中,日志记录是系统监控、故障排查和性能分析的重要组成部分。本文将深入探讨“日志4j(Log4j)...通过正确配置这些组件,开发者可以轻松管理和优化Java应用程序的日志输出,从而提高系统的可维护性和稳定性。
学习 Logback 包括理解如何配置 `logback.xml` 文件以满足项目需求,如何在代码中使用 SLF4J API 来记录日志,以及如何管理和优化日志输出,比如控制日志文件大小、滚动策略等。对于 Java 开发者来说,熟练掌握 ...
Logback是一个流行的日志记录框架,能够帮助开发者轻松地记录和管理应用程序中的日志信息。下面,我们将通过示例代码,介绍如何将Logback日志记录到数据库中。 添加依赖 首先,我们需要在pom文件中添加相应的依赖...
Logback 与 SLF4J 结合使用,提供了一个抽象层,使得应用程序可以轻松地切换到其他日志框架,如 Log4j 或 java.util.logging,而无需修改代码。SLF4J API 简洁且易于理解,使得日志记录成为一种轻量级任务。 在实际...
Logback是一个用于日志记录的开源框架,它旨在替换并改进了之前广泛使用的Log4j。描述中提到,这些jar包已经包含了所有必要的组件,意味着用户在使用这些包时,无需额外下载其他依赖。 **Logback核心组件——...
总之,Logback是一个强大的日志框架,通过`logback-classic`、`logback-core`和`slf4j-api`这些组件,以及相应的配置文件,开发者可以轻松地管理和控制应用的日志输出。理解并正确配置Logback对于任何Java项目都是至...
logback-classic是log4j的一个扩展,实现了SLF4J(Simple Logging Facade for Java)接口,使得你可以轻松切换到其他日志框架。logback-access则与Servlet容器(如Tomcat)集成,提供了HTTP访问日志记录功能。 **2....
SLF4J通过引入`LoggerFactory`类,使得我们可以轻松获取并使用日志器,例如: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyClass { private static final Logger logger =...
7. **生命周期管理**:Logback允许你管理和控制Appender的生命周期,包括启动(start)、停止(stop)和检查状态(isStarted)等操作。 8. **异常处理**:自定义Appender在处理日志事件时可能会遇到异常,这时应该...
从简单的控制台输出到复杂的日志管理和过滤,再到高效的性能和安全特性,Logback 是企业级 Java 应用的理想选择。通过下载的 `logback-1.2.1.jar` 文件,开发者可以开始探索和使用这个强大的日志系统。
总结,Logback 与 SLF4J 的结合提供了强大的日志管理能力,允许开发者编写与具体日志框架无关的代码,同时享受到 Logback 的高性能和易用性。在使用时,确保正确配置和引入所需 jar 包,以便充分利用这两个库的优势...
本项目通过使用Maven构建工具,结合Spring MVC框架,实现了前端上传文件到服务器和从服务器下载文件的功能,并利用Logback日志系统进行详细的运行记录。下面将详细介绍这个过程中的关键知识点。 一、Maven的使用 ...