logback日志组件应用和logback.xml详解(springmvc和springboot)
2017-07-18 18:54
941 查看
本章将通过logback的配置文件和4个javabean为实例,来讲解和验证logback的使用方式。
最后分别生成debug、info、error类别,以及4个javabean分别生成一个日志文件。
如图:
一、简介
Logback是由log4j创始人设计的又一个开源日志组件。Logback为取代log4j而生。Logback官方网站:http://logback.qos.ch。
logback当前分成三个模块:logback-core,logback-classic和logback-access。
logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。
此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。
logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。
二、与log4j的比较
1.更快的实现:Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小了。
2.非常充分的测试:Logback经过了几年,数不清小时的测试。Logback的测试完全不同级别的。
3.非常充分的文档
4.自动重新加载配置文件,当配置文件修改了,Logback-classic能自动重新加载配置文件。扫描过程快且安全,它并不需要另外创建一个扫描线程。
5.自动去除旧的日志文件:通过设置TimeBasedRollingPolicy或者SizeAndTimeBasedFNATP的maxHistory属性,你可以控制已经产生日志文件的最大数量。如果设置maxHistory 12,那那些log文件超过12个月的都会被自动移除。
等...
三、配置maven依赖包
log4j的配置,这里不再赘述。
Logback配置文件为:logback.xml,一般放在工程的resources包下。
maven依赖包:
四、准备程序
先抛开logback的配置文件,先用4个javabean来分别打印出日志信息。如图:
然后在TestA、B、C、D四个javabean中,分别打印出debug、info、warn、error信息。
这样调用A、B、C、D四个javabean,都会分别输出以上日志信息。
最后写一个main方法来调用并测试。
最后,通过logback.xml配置后,会打印出如下图的日志文件:
通过这样的方式,就能在系统中分模块、分功能的输出自己想要的日志信息,便于管理,然后再让我们看下logback.xml的配置文件。
先卖一个关子,我们先看看一下日志文件:TESTLOG_all_info.log.2017-07-18.log
为什么会出现B只打印了info、warn、error日志。C只打印了warn和error日志,而D只打印了error的日志呢?
而四个javabeanA、B、C、D分别生成的日志呢?如图:
这个我们在logback.xml中讲解
五、logback.xml配置文件
六、解释
为什么TESTLOG_all_info.log.2017-07-18.log的日志会是如上图那样:
因为在配置文件中A的日志级别是:debug;B的日志级别是:info;C的日志级别是:warn;D的日志级别是:error。
所以才会出现TESTLOG_all_info.log.2017-07-18.log那样的情况。
同理四个javabeanA、B、C、D分别生成的日志也是按照这个级别来显示输入的。如图:
其他的logback配置信息,在logback.xml中已经注释的非常清楚了。不必赘述。
另外:在spirngboot中,springboot已经集成了logback,如何通过application-*.properties直接配置logback,待研究。如:
七、springboot中使用logback
对于简单的logback配置,在springboot的属性文件中就可以进行配置,但是对于比较复杂的输出情况,还是用logback.xml来进行配置稍好点。
对于昨天在spirngmvc中对加入logback进行测试后,笔者随后又在springboot中对以上配置文件进行了验证,发现上面的logback.xml配置在springboot中依然奏效。
代码如下:
其打印输出的效果是和springmvc中的效果是一样的。如图:
最后分别生成debug、info、error类别,以及4个javabean分别生成一个日志文件。
如图:
一、简介
Logback是由log4j创始人设计的又一个开源日志组件。Logback为取代log4j而生。Logback官方网站:http://logback.qos.ch。
logback当前分成三个模块:logback-core,logback-classic和logback-access。
logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。
此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。
logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。
二、与log4j的比较
1.更快的实现:Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小了。
2.非常充分的测试:Logback经过了几年,数不清小时的测试。Logback的测试完全不同级别的。
3.非常充分的文档
4.自动重新加载配置文件,当配置文件修改了,Logback-classic能自动重新加载配置文件。扫描过程快且安全,它并不需要另外创建一个扫描线程。
5.自动去除旧的日志文件:通过设置TimeBasedRollingPolicy或者SizeAndTimeBasedFNATP的maxHistory属性,你可以控制已经产生日志文件的最大数量。如果设置maxHistory 12,那那些log文件超过12个月的都会被自动移除。
等...
三、配置maven依赖包
log4j的配置,这里不再赘述。
Logback配置文件为:logback.xml,一般放在工程的resources包下。
maven依赖包:
四、准备程序
先抛开logback的配置文件,先用4个javabean来分别打印出日志信息。如图:
然后在TestA、B、C、D四个javabean中,分别打印出debug、info、warn、error信息。
这样调用A、B、C、D四个javabean,都会分别输出以上日志信息。
最后写一个main方法来调用并测试。
最后,通过logback.xml配置后,会打印出如下图的日志文件:
通过这样的方式,就能在系统中分模块、分功能的输出自己想要的日志信息,便于管理,然后再让我们看下logback.xml的配置文件。
先卖一个关子,我们先看看一下日志文件:TESTLOG_all_info.log.2017-07-18.log
为什么会出现B只打印了info、warn、error日志。C只打印了warn和error日志,而D只打印了error的日志呢?
而四个javabeanA、B、C、D分别生成的日志呢?如图:
这个我们在logback.xml中讲解
五、logback.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?> truesystem-log-info: %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{100} - %msg%n trueINFO./log/TESTLOG_all_info.log./log/TESTLOG_all_info.log.%d{yyyy-MM-dd}.log30%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n20MBINFO./log/TESTLOG_all_test_info.log./log/TESTLOG_all_test_info.%d{yyyy-MM-dd}.%i.log155MB%date [%thread] %-5level %logger - %msg%nERRORACCEPTDENY./log/TESTLOG_all_error.log./log/TESTLOG_all_error.%d{yyyy-MM-dd}.%i.log155MB%date [%thread] %-5level %logger - %msg%nDEBUG./log/TESTLOG_all_debug.log./log/TESTLOG_all_debug.%d{yyyy-MM-dd}.%i.log155MB%date [%thread] %-5level %logger{80} - %msg%n./log/TESTLOG_a_debug.log./log/TESTLOG_a_debug.%d{yyyy-MM-dd}.%i.log155MB%date [%thread] %-5level %logger{80} - %msg%n./log/TESTLOG_b_info.log./log/TESTLOG_b_info.%d{yyyy-MM-dd}.%i.log155MB%date [%thread] %-5level %logger{80} - %msg%n./log/TESTLOG_c_warn.log./log/TESTLOG_c_warn.%d{yyyy-MM-dd}.%i.log155MB%date [%thread] %-5level %logger{80} - %msg%n./log/TESTLOG_d_error.log./log/TESTLOG_d_error.%d{yyyy-MM-dd}.%i.log155MB%date [%thread] %-5level %logger{80} - %msg%n
六、解释
为什么TESTLOG_all_info.log.2017-07-18.log的日志会是如上图那样:
因为在配置文件中A的日志级别是:debug;B的日志级别是:info;C的日志级别是:warn;D的日志级别是:error。
所以才会出现TESTLOG_all_info.log.2017-07-18.log那样的情况。
同理四个javabeanA、B、C、D分别生成的日志也是按照这个级别来显示输入的。如图:
其他的logback配置信息,在logback.xml中已经注释的非常清楚了。不必赘述。
另外:在spirngboot中,springboot已经集成了logback,如何通过application-*.properties直接配置logback,待研究。如:
logging.file=D:/logback/xxboot.log logging.level.org.springframework.web=DEBUG
七、springboot中使用logback
对于简单的logback配置,在springboot的属性文件中就可以进行配置,但是对于比较复杂的输出情况,还是用logback.xml来进行配置稍好点。
对于昨天在spirngmvc中对加入logback进行测试后,笔者随后又在springboot中对以上配置文件进行了验证,发现上面的logback.xml配置在springboot中依然奏效。
代码如下:
//A-debug-log @RestController public class AlogController { private final Logger log = LoggerFactory.getLogger(AlogController.class); @RequestMapping("/Alog") public void Alog(){ log.debug("test=====A=====debug-log"); log.info("test=====A=====info-log"); log.warn("test=====A=====warn-log"); log.error("test=====A=====errro-log"); } } //B-info-log @RestController public class BlogController { private final Logger log = LoggerFactory.getLogger(BlogController.class); @RequestMapping("/Blog") public void Blog(){ log.debug("test=====B=====debug-log"); log.info("test=====B=====info-log"); log.warn("test=====B=====warn-log"); log.error("test=====B=====errro-log"); } } //C-warn-log @RestController public class ClogController { private final Logger log = LoggerFactory.getLogger(ClogController.class); @RequestMapping("/Clog") public void Clog(){ log.debug("test=====C=====debug-log"); log.info("test=====C=====info-log"); log.warn("test=====C=====warn-log"); log.error("test=====C=====errro-log"); } } //D-error-log @RestController public class DlogController { private final Logger log = LoggerFactory.getLogger(DlogController.class); @RequestMapping("/Dlog") public void Dlog(){ log.debug("test=====D=====debug-log"); log.info("test=====D=====info-log"); log.warn("test=====D=====warn-log"); log.error("test=====D=====errro-log"); } }
其打印输出的效果是和springmvc中的效果是一样的。如图:
相关文章推荐
- logback的使用和logback.xml详解,在Spring项目中使用log打印日志
- spring boot使用logback实现多环境日志配置详解
- spring boot 日志配置 logback-spring.xml
- maven 项目 springmvc spring 使用SLF4J和 LogBack 做为日志 xml里配置即可
- 详解Spring Boot配置使用Logback进行日志记录的实战
- (转)Spring boot——logback.xml 配置详解(三)<appender>
- java鬼混笔记:springboot 10、springboot logback-spring.xml简单的日志配置
- SpringBoot基础教程2-1-5 日志规范-logback配置详解
- 为什么Spring Boot推荐使用logback-spring.xml来替代logback.xml来配置logback日志的问题分析
- 详解Spring Boot下使用logback 记录多个文件日志
- (转)Spring boot——logback.xml 配置详解(四)<filter>
- spring boot + spring cloud日志级别的配置logback.xml
- Spring boot——logback.xml 配置详解(二)
- Spring boot——logback.xml 配置详解(三)<appender>
- 如何修改覆盖spring boot默认日志策略logback详解
- 为什么Spring Boot推荐使用logback-spring.xml来替代logback.xml来配置logback日志的问题分析
- Spring boot——logback.xml 配置详解(四)<filter>
- 基于Spring Boot的Logback日志轮转配置详解
- (转)Spring boot——logback.xml 配置详解(二)
- 关于springboot的默认日志配置文件logback.xml