logback 简单配置总述
来源:互联网 发布:mac关闭日历广告 编辑:程序博客网 时间:2024/06/05 12:39
近来有一个系统日志分模块输出的需求。其实需求很简单,只是第一次使用slf4j+logback的日志架构。故参照了很多博客和一些实例进行配置和测试。
在测试过程中发现网上有很多配置是错误的,有很多是误导的,故将自己前前后后,反反复复测试了很多遍,最后完美通过的实例拿上来和大家分享一下。
一、主要标签释义(因为都可以在网上查找到,我只列举几个重要的和我用到的)
1.configuration。是整个配置文件的父标签。有三个属性,我用到的是debug,默认false,因为途中需要看调试信息,查看配置是否有错误,故将该属性设置为true。
2.appender。负责写日志的组件。必要属性name指定appender的名称(可以自定义);class指定appender的全限定名。
appender有几种现实方式,较为常用的有三种。
(1)ConsoleAppender是把日志打印到控制台。
由于我做的日志系统没有这部分打印需求,故没有使用。
(2)FileAppender把日志打印到文件。可以实现结尾追加,也可以不结尾追加。
(3)RollingFileAppender滚动记录日志。先将日志记录到指定文件,当符合某个条件的时候将日志记录到其他文件。由于我的需求使用的是该方式实现。故重点讲该方式。
3.logger。该标签是子域,设定某包下的日志输出路径。
关键属性是additivity,默认为true,为true时则表明向上级结构输出。
4.root。该标签为父域,为根的意思。是logger的父。
二、滚动生成日志策略实现
主要是实现日志的按天生成日志,旧日志会自动压缩备份。同时如果当天的日志文件大小超过1g,则自动创建新日志文件,旧日志文件进行压缩备份。
<appender name="FRONT-FILE"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/front/front.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/front/front.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>1024MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30</maxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{55} -%msg%n</pattern></layout></appender>对于这里的注意点有两个:
(1)网上很多网页误导人的一句是这里:
<fileNamePattern>${LOG_HOME}/front/front.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>丢写了%i,这样会导致每次都会覆盖原来文件,并没有达到备份的效果。
(2)时间和大小共同制约的策略实现。
有一些人是这样配置的(这种方式是实现不了目的的):
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/front/front.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern><maxHistory>30</maxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{55} -%msg%n</pattern></layout>
<triggeringPolicyclass="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>30MB</MaxFileSize></triggeringPolicy>使用triggeringPolicy标签来实现。事实证明,这个是logback的一个bug,是实现不了。所以要务必注意。
三、日志多模块输出
一般日志会要求业务进行单独输出,这样的话可以理解为一个业务模块对应一个日志,多个业务模块对应不同日志。
<appender name="FRONT-FILE"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/front/front.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/front/front.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>1024MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30</maxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{55} -%msg%n</pattern></layout></appender><appender name="GOODS-FILE"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/goods/goods.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${LOG_HOME}/goods/goods.%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>1024MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30</maxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{55} -%msg%n</pattern></layout></appender>
<logger name="com.test.goods" level="INFO" additivity="false"> <appender-ref ref="GOODS-FILE"/></logger>
<root level="INFO"> <appender-ref ref="FRONT-FILE" /></root>
需要注意的是logger中的additivity属性,设置成为false。这样该模块的日志则不会在root模块的日志同步输出了!
这样配置就能实现多模块输出了。以goods模块为模版,进行多模版配置即可。与相关业务相关的日志会打印到各自的日志中,与业务无关的日志则会打印到FRONT-FILE日志中。
希望对大家有些用处,共勉!
- logback 简单配置总述
- logback简单配置详解
- spring整合slf4j+logback以及logback 简单配置
- slf4j + logback 简单配置及实现
- logback的简单配置及使用
- logback配置
- Logback 配置
- logback配置
- logback配置
- logback 配置
- Logback配置
- logback 配置
- logback.配置
- LogBack配置
- logback配置
- logback配置
- logback配置
- logback配置
- c++第十四章-(类型强转换)
- cocoaPods安装与使用
- 《将博客搬至CSDN》
- 图简介3-有向图的实现+深度/广度优先搜索
- “中国制造”并非荣耀
- logback 简单配置总述
- bzoj1031
- hdu2795 Billboard 线段树区间更新
- [iOS diary]UIViewController 里面的self.view是已经初始化过的。
- 理解最小生成树 prim算法
- android 简单的上拉加载实现
- 【HDU】4005 The war 边双连通
- 蓝桥杯 算法训练 结点选择 (树形动态规划)
- linux下rsync工具使用与配置