最近才开始在项目中使用logback,有一种相见恨晚的感觉,因为它很轻易的满足了我的几个需求:
1. 配置简单,易于上手
2. 一个日志文件中只能某一个级别的日志
3. 一个类中可以指定多个不同的日志,并且生成的每个日志文件中只包含其本身的内容
4. 可以关闭或者打开某几个包的日志,并且可以设置不同的包使用不同的日志级别。
一、易用性
logback的易用性不用多讲,只需要通过下面两行就可以在console中输出日志:
- <pre name="code" class="html">Logger debugLogger = LoggerFactory.getLogger(MyClass.class);
- </pre>logger.info("This is a log");
程序运行时,logback会查找默认的配置文件logback.xml或者logback-test.xml文件,如果没有找到它就会使用默认的配置,将日志打印到console中。下面是一个简单配置文件(http://logback.qos.ch/manual/configuration.html):
- <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的日志内容。
三、同一个类中包含不同的日志
有时候一个类中可能要求打印不同的日志信息,例如有的用来调试,有的用来记录程序运行中的某些参数的变化等等。这时候可以通过下面的语句声明不同的日志:
- Logger debugLogger = LoggerFactory.getLogger(MyClass.class);
- Logger monitorLogger = LoggerFactory.getLogger("monitor");
然后在配置文件中分别指定不同的输出文件(debugLogger使用默认的配置):
- <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">
- <span style="white-space:pre"> </span><appender-ref ref="monitor" />
- <span style="white-space:pre"> </span></logger>
这里通过设置additivity="false"禁止monitor里的内容向上传递,否则会同时显示在默认的日志中。
四、精确控制日志的应用范围
在程序调试中,经常出现的情况是:错误只在某一个或者几个类或者包里,所以只需要打开这几个类或者包里的DEBUG级别的log。在以前的项目,使用Spring和Hibernate时,一旦打开DEBUG级别的log,程序本身的debug信息就会被Spring和Hibernate的大量日志淹没,大大降低了调试的效率。而logback让这一切变的简单起来了:
- <logger name="org" level="ERROR" />
这一行就将org包下面的所有日志级别设为了ERROR,不会再打扰我们的DEBUG。
相关推荐
springboot项目,使用logback保存日志到数据库,非自增主键id,insert使用的是UUID
关闭HttpClient日志的logback文件
几乎是网上 能找到的 日志脱敏的所有实现 1、基于正则表达式的 日志脱敏实现 ,扩展logback 、log4j 2、springmvc 返回报文脱敏。 3、基于注解方式的脱敏。 大家选择使用。
扩展logback将日志输出到Kafka实例源码,详情请参见博文:http://blog.csdn.net/l1028386804/article/details/79135948
在日常工程开发中,日志是非常重要的一部分,通过...本资源基于maven,使用logback搭建日志结构,实现多种级别日志的输出控制,并封装各个级别的日志输出方法,可以作为日志管理基础进行扩展以满足其他场景的日志管理。
LogBack日志的使用,有配置文件,详细的说明文档,所需要的jar包
logback日志的jar包和配置介绍:logback-classic-1.1.2.jar、logback-core-1.1.2.jar、slf4j-api-1.7.7.jar、logback.xml、rsframework.properties
目前所有的日志记录方式采用的都是同步的方式,即直接将日志写入文件。每次日志输出到文件都会进行一次磁盘IO,在多应用的时候这种效果会导致一定的线程运行延迟,所以可以采用异步的方式处理。 采用异步写日志的...
Spring Boot默认使用LogBack日志系统,并且已经引入了相关的jar包,所以我们无需任何配置便可以使用LogBack打印日志。这篇文章主要介绍了SpringBoot+Logback实现一个简单的链路追踪功能,需要的朋友可以参考下
Tomcat日志catalina.out过大解决方案--使用logback的资源包,包括jar包,和使用文档,具体使用请参考我的同名博客。
springboot+logback输出日志文件1
logback做日志(代码演示和文档),logback做日志(代码演示和文档)
Spring Boot项目中使用Logback日志与使用AOP拦截请求日志信息
本篇文章主要介绍了在SpringBoot中使用Logback管理记录日志,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Grails3配置logback日志.pdf
springboot整合日志管理Logback.zip
ppt文件描述了使用Logback的10个好处,并举例说明了logback的优点。
适用于java中的Logback日志框架
这个代码实现了一个简单的应用程序,并使用了Logback日志框架来记录程序的运行日志。首先,我们通过调用LoggerFactory.getLogger()方法创建了一个Logger对象,用于记录应用程序的日志信息。然后,在主函数中,我们...
logback日志写logstash配置appender参考