LogBack.xml文件配置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LogBack.xml⽂件配置
Logback-spring.xml配置⽂件
1、⽇志级别:⽇志级别从低到⾼分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,例如:如果设置为WARN,则低于WARN 的信息都不会输出
2、根节点:configuration
configuration 有三个可选属性:
a、scan属性:⽤来设置配置⽂件变动时是否重新加载,值是true\false,默认是true即配置变动时重新加载
b、scanperiod属性:⽤来设置每隔多久检查⼀次配置是否变动,默认是1分钟,默认单位是毫秒
c、debug属性:⽤来设置是否将logback内部的⽇志打印出来,即启动时输出配置加载信息。
值为true\false 默认为false
3、property节点:
设置要使⽤的或者共⽤的变量,property包含两个属性name和value;其中name的值是变量的名称,value的值是变量所代表的值。
<property>定义的值可以使⽤“${变量名}”到logger上下⽂中。
4、springProperty节点
该标签的⼯作⽅式类似于Logback的标准<property>标签。
但是,value您⽆需指定direct,⽽是指定source属性的(来⾃Environment)。
如果需要将属性存储在local范围之外的其他位置,则可以使⽤该scope属性。
如果需要后备值(如果未在中设置属性Environment),则可以使⽤defaultValue属性。
5.appender节点
appender节点可以有多个,分别针对不同的包或者类做不同的输出,
如果appender输出到⽂件时,可以设置append⼦节点值true/false,是末尾追加⽇志还是替换⽇志,值为true时表⽰追加。
可以在appender中使⽤filter节点(过滤器),在此节点内过滤⽇志级别(使⽤level节点指定),过滤后会返回⼀个枚举值,
即DENY,NEUTRAL,ACCEPT其中之⼀:
A、返回DENY,⽇志将⽴即被抛弃不再经过其他过滤器;
B、返回NEUTRAL,有序列表⾥的下个过滤器接着处理⽇志;
C、返回ACCEPT,⽇志会被⽴即处理,不再经过剩余过滤器
如果需要使⽤这些值做处理时,需要使⽤onMatch(level级别或⼤于level级别的)和onMismatch(级别⼩于level级别的)
6、logger节点
⽤来设置某⼀个包或者具体的某⼀个类的⽇志打印级别、以及指定appender。
logger仅有⼀个name属性和两个可选的level、addtivity属性。
Name属性:⽤来指定受此logger约束的某⼀个包或者具体的某⼀个类。
Level属性:⽤来设置打印级别,⼤⼩写⽆关:TRACE, DEBUG, INFO, WARN, ERROR
如果未设置此属性,那么当前logger将会继承上级的级别。
Addtivity属性:⽤来设置是否向上级logger传递打印信息。
默认是true。
logger可以包含零个或多个appender-ref元素,标识这个appender将会添加到这个logger
7、root节点
也是<logger>元素,但是它是根logger。
只有⼀个level属性,因为已经被命名为"root".
level:⽤来设置打印级别,⼤⼩写⽆关:TRACE, DEBUG, INFO, WARN, ERROR。
默认是DEBUG。
root可以包含零个或多个appender-ref元素,标识这个appender将会添加到这个logger
8、pattern节点定义的输出模式解释
%d{HH:mm:ss.SSS} 当前时间;
[%thread] [当前线程名称]
%-5level logger级别
%logger{36} logger名称
-%msg%n 定义的输出
%line 输出⽇志的⾏号
%n 换⾏
%date和%d{yyyy-MM-dd HH:mm:ss.SSS} 当前时间包含年⽉⽇
{%C.java:%L} 输出⽇志所在的java类、所在⾏及路径可以替换[%thread]
9、appender下的filter的常见种类
在logback中,过滤器可以添加到Appender上。
通过添加⼀个或多个过滤器到Appender,你可以通过任意条件,
⽐如:⽇志内容、MDC内容、时间等等⽇志的任何部分,过滤⽇志事件。
级别过滤器
级别过滤器()是基于准确匹配⽇志级别。
如果⽇志级别等于配置的级别,过滤器通过配置中的OnMatch与OnMismatch属性决定是接受还是拒绝事件。
阀值过滤器
阀值过滤器()过滤低于指定阀值的事件。
当事件中的⽇志级别⼤于等于指定阀值时,过滤器的decide⽅法返回NEUTRAL。
然⽽,拒绝⽇志级别⼩于阀值的事件。
条件过滤器
条件过滤器()是⼀种封装了EventEvaluator的通过过滤器。
像名字代表的,条件过滤器是根据判断事件是否符合指定条件来分别返回OnMatch与OnMismatch属性⾥的值。
注意:EventEvaluator是⼀个抽象类,通过继承它,你可以实现你⾃⼰的条件逻辑。
附上配置⽂件模板:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
<property name="LOG_ROOT" value="你的⽇志的根路径"></property>
<property name="LOG_PATH" value="⽇志路径"/>
<springProperty scop="context" name="" source="" defaultValue="你的项⽬名"/>
<property name="log.path" value="${LOG_ROOT}/${LOG_PATH}/${}"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{MM-dd HH:mm:ss.SSS} %-5level [%logger{50}] - %msg%n</pattern>
</encoder>
</appender>
<!-- Log file error output -->
<!-- 每天⽣成⽇志⽂件,⽂件⼤⼩超过20则新⽣成⼀个⽂件,
同时将旧⽂件按${LOG_HOME}/logs/error.%d{yyyy-MM-dd}.%i.log格式保存,⽂件保存30天 -->
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的⽇志⽂档的路径及⽂档名 -->
<file>${log.path}/info.log</file><!-- ⽇志名称 -->
<!-- ⽇志记录器的滚动策略,按⽇期,按⼤⼩记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 每天⽇志归档路径以及格式 -->
<fileNamePattern>${log.path}/%d{yyyy-MM}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- ⽇志⽂件过⼤会使的编辑器打开⾮常慢,因此设置⽇志最⼤20MB -->
<maxFileSize>20MB</maxFileSize>
<!--⽇志⽂档保留天数-->
<maxHistory>30</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<!-- <totalSizeCap>10GB</totalSizeCap> <!– 总⽇志⼤⼩ –>-->
</rollingPolicy>
<!-- encoder负责两件事,⽇志⽂档输出格式,⼀是把⽇志信息转换成字节数组,⼆是把字节数组写⼊到输出流 -->
<encoder>
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
</encoder>
<!-- 过滤器,可以过滤掉不符合条件的⽇志,INFO及以上的⽇志被处理,其它的拒绝 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
</appender>
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/%d{yyyy-MM}/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>20MB</maxFileSize>
<maxHistory>30</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
</appender>
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>20MB</maxFileSize>
<maxHistory>30</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>error</level>
</filter>
</appender>
<logger name="org.springframework" level="INFO"/>
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springframework.beans" level="INFO"/>
<logger name="org.apache" level="WARN"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="javax.activation" level="WARN"/>
<logger name="org.mybatis.spring" level="INFO"/>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
<appender-ref ref="info"/>
</root>
</configuration>。