logback日志组件应用和logback.xml详解(springmvc和springboot)
来源:互联网 发布:淘宝童装排名 编辑:程序博客网 时间:2024/06/11 18:13
本章将通过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依赖包:
最后写一个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配置文件
true system-log-info: %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{100} - %msg%n true INFO ./log/TESTLOG_all_info.log ./log/TESTLOG_all_info.log.%d{yyyy-MM-dd}.log 30 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n 20MB INFO ./log/TESTLOG_all_test_info.log ./log/TESTLOG_all_test_info.%d{yyyy-MM-dd}.%i.log 1 5 5MB %date [%thread] %-5level %logger - %msg%n ERROR ACCEPT DENY ./log/TESTLOG_all_error.log ./log/TESTLOG_all_error.%d{yyyy-MM-dd}.%i.log 1 5 5MB %date [%thread] %-5level %logger - %msg%n DEBUG ./log/TESTLOG_all_debug.log ./log/TESTLOG_all_debug.%d{yyyy-MM-dd}.%i.log 1 5 5MB %date [%thread] %-5level %logger{80} - %msg%n ./log/TESTLOG_a_debug.log ./log/TESTLOG_a_debug.%d{yyyy-MM-dd}.%i.log 1 5 5MB %date [%thread] %-5level %logger{80} - %msg%n ./log/TESTLOG_b_info.log ./log/TESTLOG_b_info.%d{yyyy-MM-dd}.%i.log 1 5 5MB %date [%thread] %-5level %logger{80} - %msg%n ./log/TESTLOG_c_warn.log ./log/TESTLOG_c_warn.%d{yyyy-MM-dd}.%i.log 1 5 5MB %date [%thread] %-5level %logger{80} - %msg%n ./log/TESTLOG_d_error.log ./log/TESTLOG_d_error.%d{yyyy-MM-dd}.%i.log 1 5 5MB %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.loglogging.level.org.springframework.web=DEBUG
七、springboot中使用logback
对于简单的logback配置,在springboot的属性文件中就可以进行配置,但是对于比较复杂的输出情况,还是用logback.xml来进行配置稍好点。
对于昨天在spirngmvc中对加入logback进行测试后,笔者随后又在springboot中对以上配置文件进行了验证,发现上面的logback.xml配置在springboot中依然奏效。
代码如下:
//A-debug-log@RestControllerpublic 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@RestControllerpublic 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@RestControllerpublic 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@RestControllerpublic 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"); }}
- logback日志组件应用和logback.xml详解(springmvc和springboot)
- 日志管理logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- jquery validate表单验证插件
- 论文创作
- 【bzoj2957】楼房重建
- NoSuchFieldError: FAIL_ON_SYMBOL_HASH_OVERFLOW问题解决
- testng入门教程(简单易懂)
- logback日志组件应用和logback.xml详解(springmvc和springboot)
- 优先队列
- 深入了解 gRPC:协议
- 机器学习相关书籍
- POJ3009 解题报告
- 合并两个有序链表
- 杨辉三角
- SQL学习笔记:表的约束
- List ADT的两种实现方式:ArrayList和LinkedList