`

使用logback轻松管理日志

    博客分类:
  • Log
 
阅读更多

最近才开始在项目中使用logback,因为它很轻易的满足了我的几个需求:

 

1. 配置简单,易于上手

2. 一个日志文件中只能某一个级别的日志

3. 一个类中可以指定多个不同的日志,并且生成的每个日志文件中只包含其本身的内容

4. 可以关闭或者打开某几个包的日志,并且可以设置不同的包使用不同的日志级别。

 

一、易用性

logback的易用性不用多讲,只需要通过下面两行就可以在console中输出日志:

 

01.<pre class="html" name="code">Logger debugLogger = LoggerFactory.getLogger(MyClass.class);  
02.</pre>logger.info("This is a log");  
  1. 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来严格限制日志的输出级别:

 

01.<filter class="ch.qos.logback.classic.filter.LevelFilter">  
02.    <level>INFO</level>  
03.    <onMatch>ACCEPT</onMatch>  
04.    <onMismatch>DENY</onMismatch>  
05.</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。

分享到:
评论

相关推荐

    使用Logback的10个理由

    通过使用适当的桥接库,如 jcl104-over-slf4j.jar,可以轻松地将现有的JCL或log4j日志调用转换为SLF4J,从而方便地迁移到logback。 5. **JUL支持**:如果你的项目中已经使用了JUL,logback 也提供了直接支持,通过...

    logback下载 日志文件jar包

    Logback 是一款广泛使用的日志记录框架,由 Ceki Gülcü 创建,作为其先前作品 Log4j 的改进版。这个压缩包包含了实现 Logback 功能所需的几个关键组件,以及一个配置文件,使得用户能够方便地管理和记录应用程序的...

    spring boot使用logback实现多环境日志配置详解

    总之,Spring Boot结合Logback提供了灵活而强大的日志配置能力,使得开发者可以轻松地为不同的环境定制日志输出,从而有效支持开发、测试和生产等环节的需要。通过正确地使用application.yml和logback-spring.xml...

    logback日志框架包

    Logback 是一个广泛使用的日志记录框架,由 Ceki Gülcü 创建,他是早期流行的日志框架 Log4j 的创始人。...在Java SE和Java EE项目中,logback是一个强大的选择,能够提供高效、可扩展且易于管理的日志解决方案。

    Spring boot使用logback实现日志管理过程详解

    Spring Boot 默认集成了 Logback,因此我们可以轻松地使用 Logback 实现日志管理。 配置 Logback 要使用 Logback,我们需要在项目中添加相关的依赖项。我们可以在 pom.xml 文件中添加以下依赖项: ``` &lt;groupId&gt;...

    LogBack的基本知识和优势

    LogBack 是一个强大的日志框架,它在日志管理领域接替了早期的log4j,提供了更高效、更灵活的解决方案。LogBack 的设计哲学是"同样的基础架构,但做得更好",它不是一场革命,而是log4j的自然进化,强调更快的速度、...

    10 reasons to use logback !------log4j他爹告诉你为何要使用新的日志包logback

    这意味着使用logback可以轻松地与其他SLF4J兼容的日志框架集成。 3. 动态配置:logback提供动态配置功能,可以通过JMX(Java Management Extensions)接口在运行时调整日志级别,无需重启应用。 4. 分级日志记录:...

    日志 log4j-slf4j+logback1.3.0

    在IT行业中,日志记录是系统监控、故障排查和性能分析的重要组成部分。本文将深入探讨“日志4j(Log4j)...通过正确配置这些组件,开发者可以轻松管理和优化Java应用程序的日志输出,从而提高系统的可维护性和稳定性。

    Logback类库含logback.xml配置文件

    学习 Logback 包括理解如何配置 `logback.xml` 文件以满足项目需求,如何在代码中使用 SLF4J API 来记录日志,以及如何管理和优化日志输出,比如控制日志文件大小、滚动策略等。对于 Java 开发者来说,熟练掌握 ...

    SpringBoot Logback日志记录到数据库的实现方法

    Logback是一个流行的日志记录框架,能够帮助开发者轻松地记录和管理应用程序中的日志信息。下面,我们将通过示例代码,介绍如何将Logback日志记录到数据库中。 添加依赖 首先,我们需要在pom文件中添加相应的依赖...

    logback中文文档pdf

    Logback 与 SLF4J 结合使用,提供了一个抽象层,使得应用程序可以轻松地切换到其他日志框架,如 Log4j 或 java.util.logging,而无需修改代码。SLF4J API 简洁且易于理解,使得日志记录成为一种轻量级任务。 在实际...

    logback相关jar包

    Logback是一个用于日志记录的开源框架,它旨在替换并改进了之前广泛使用的Log4j。描述中提到,这些jar包已经包含了所有必要的组件,意味着用户在使用这些包时,无需额外下载其他依赖。 **Logback核心组件——...

    日志框架+Logback的jar包和配置文件

    总之,Logback是一个强大的日志框架,通过`logback-classic`、`logback-core`和`slf4j-api`这些组件,以及相应的配置文件,开发者可以轻松地管理和控制应用的日志输出。理解并正确配置Logback对于任何Java项目都是至...

    logback.jar

    logback-classic是log4j的一个扩展,实现了SLF4J(Simple Logging Facade for Java)接口,使得你可以轻松切换到其他日志框架。logback-access则与Servlet容器(如Tomcat)集成,提供了HTTP访问日志记录功能。 **2....

    调试日志之slf4j+logback

    SLF4J通过引入`LoggerFactory`类,使得我们可以轻松获取并使用日志器,例如: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyClass { private static final Logger logger =...

    logback+slf4j使用

    7. **生命周期管理**:Logback允许你管理和控制Appender的生命周期,包括启动(start)、停止(stop)和检查状态(isStarted)等操作。 8. **异常处理**:自定义Appender在处理日志事件时可能会遇到异常,这时应该...

    logback官方文档+jar包

    从简单的控制台输出到复杂的日志管理和过滤,再到高效的性能和安全特性,Logback 是企业级 Java 应用的理想选择。通过下载的 `logback-1.2.1.jar` 文件,开发者可以开始探索和使用这个强大的日志系统。

    logback所需jar包

    总结,Logback 与 SLF4J 的结合提供了强大的日志管理能力,允许开发者编写与具体日志框架无关的代码,同时享受到 Logback 的高性能和易用性。在使用时,确保正确配置和引入所需 jar 包,以便充分利用这两个库的优势...

    使用maven实现web端上传和下载功能,并配有logback日志

    本项目通过使用Maven构建工具,结合Spring MVC框架,实现了前端上传文件到服务器和从服务器下载文件的功能,并利用Logback日志系统进行详细的运行记录。下面将详细介绍这个过程中的关键知识点。 一、Maven的使用 ...

Global site tag (gtag.js) - Google Analytics