<?xml version="1.0" encoding="UTF-8"?>
|
<!--scan为true(默认每一分钟扫描一下配置文件,如果发生更改就重新加载配置文件)
|
scanPeriod设置扫描配置文件的时间间隔(如果没有指定单位默认为毫秒)
|
debug 如果设置为true,在控制台中打印logback内部运行日志(内部状态信息,如果配置文件有错误
|
也会输出),由于logback已经很稳定了,我们一般设置为false,以免干扰我们查看有用的日志信息 -->
|
<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
|
<!--定义参数常量(全局变量)-->
|
<!--设置Logger的等级 (TRACE<DEBUG<INFO<WARN<ERROR),假设配置为INFO,那么debug将不会被
|
输出,我们一般会把debug,info,error的信息分别输出到文件中-->
|
<property name="log.level" value="debug"/>
|
<!--归档日志文件保存的最大时间(单位跟按什么轮转有关,比如按天轮转那么单位就为天) -->
|
<property name="log.maxHistory" value="30"/>
|
<!--日志存储的根路径 ${catalina.base}指向每个Tomcat目录私有信息的位置,
|
就是conf、logs、temp、webapps和work的父目录-->
|
<property name="log.filePath" value="/tmp/logs"/>
|
<!--日志展示的格式-->
|
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
|
|
<!--appender是为了配置日志信息输出到哪个地方-->
|
<!--控制台设置,输出到控制台中-->
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
<!--encoder作用是既把日志信息转换为字符串,也输出到指定的位置 -->
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
<!--pattern为配置输出的格式-->
|
<pattern>${log.pattern}</pattern>
|
</encoder>
|
</appender>
|
|
|
<!-- ERROR -->
|
<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<file>${log.filePath}/error.log</file>
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
<fileNamePattern>${log.filePath}/error/error.log.gz.%d{yyyy-MM-dd}</fileNamePattern>
|
<maxHistory>${log.maxHistory}</maxHistory>
|
</rollingPolicy>
|
<encoder>
|
<pattern>${log.pattern}</pattern>
|
</encoder>
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
<level>ERROR</level>
|
<onMatch>ACCEPT</onMatch>
|
<onMismatch>DENY</onMismatch>
|
</filter>
|
</appender>
|
|
<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<file>${log.filePath}/info.log</file>
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
<fileNamePattern>${log.filePath}/info/info.log.gz.%d{yyyy-MM-dd}</fileNamePattern>
|
<maxHistory>${log.maxHistory}</maxHistory>
|
</rollingPolicy>
|
<encoder>
|
<pattern>${log.pattern}</pattern>
|
</encoder>
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
<level>INFO</level>
|
<onMatch>ACCEPT</onMatch>
|
<onMismatch>DENY</onMismatch>
|
</filter>
|
</appender>
|
|
<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<file>${log.filePath}/debug.log</file>
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
<fileNamePattern>${log.filePath}/debug/debug.log.gz.%d{yyyy-MM-dd}</fileNamePattern>
|
<maxHistory>${log.maxHistory}</maxHistory>
|
</rollingPolicy>
|
<encoder>
|
<pattern>${log.pattern}</pattern>
|
</encoder>
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
<level>DEBUG</level>
|
<onMatch>ACCEPT</onMatch>
|
<onMismatch>DENY</onMismatch>
|
</filter>
|
</appender>
|
|
|
<appender name="redisAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
<file>${log.filePath}/redis.log</file>
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
<fileNamePattern>${log.filePath}/redis/redis.log.gz.%d{yyyy-MM-dd}</fileNamePattern>
|
<maxHistory>${log.maxHistory}</maxHistory>
|
</rollingPolicy>
|
<encoder>
|
<pattern>${log.pattern}</pattern>
|
</encoder>
|
</appender>
|
|
<!--name表示为哪一个logger指定层级和输出的方式
|
additivity表示叠加祖先的输出方式(默认为true,会叠加),所以com.lxc.o2o以及其子类都会输出在控制台中,因为这个logger继承了root中的appender
|
level表示级别大于等于${log.level}的信息才会输出,输出方式为配置的appender,
|
由于这里level为debug(重写了,就不会继承root的level了),
|
所以控制台中会输出大于等于debug等级的日志(包括持久层执行的mysql)
|
并且
|
debug日志会输出到debugAppender指定的文件中
|
info日志会输出到infoAppender指定的文件中
|
error日志会输出到errorAppender指定的文件中-->
|
|
<logger name="io.seata" level="ERROR"></logger>
|
<logger name="System.out" level="INFO"></logger>
|
|
|
<!-- 一切logger都会继承自root,root默认的层级level为debug -->
|
<root level="INFO">
|
<!--在控制台中输出所在层级对应level(以及大于level)的日志信息,因为这里并没有设置LevelFilter-->
|
<appender-ref ref="STDOUT"></appender-ref>
|
<appender-ref ref="errorAppender"></appender-ref>
|
<appender-ref ref="infoAppender"></appender-ref>
|
<appender-ref ref="debugAppender"></appender-ref>
|
</root>
|
</configuration>
|