<?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.filePath" value="D:/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>
|
|
<!-- INFO -->
|
<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 class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
<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="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>
|
|
<appender name="KAFKA" class="org.yeshi.utils.log.KafkaAppender" >
|
<!-- encoder必须配置, 日志格式 -->
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
<!--<pattern>-->
|
<!--%red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %green([%thread]) %boldMagenta(%logger{10}) - %cyan(%msg%n)-->
|
<!--</pattern>-->
|
<!--为了便于分析将日志数据转为json格式-->
|
<pattern>${log.pattern}</pattern>
|
<!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->
|
<charset>UTF-8</charset>
|
</encoder>
|
<bootstrapServers>${bootstrapServers}</bootstrapServers>
|
<topic>${topic}</topic>
|
<batchSize>${batchSize}</batchSize>
|
<lingerMs>${lingerMs}</lingerMs>
|
<compressionType>${compressionType}</compressionType>
|
<retries>${retries}</retries>
|
<maxRequestSize>${maxRequestSize}</maxRequestSize>
|
<isSend>${isSend}</isSend>
|
</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都会继承自root,root默认的层级level为debug -->
|
|
|
<!--<logger name="activityJoinLogger" level="INFO" additivity="true">-->
|
<!--<appender-ref ref="activityJoinAppender"></appender-ref>-->
|
<!--</logger>-->
|
<logger name="org.springframework.data.redis.core" level="DEBUG" additivity="true">
|
<appender-ref ref="redisAppender"></appender-ref>
|
</logger>
|
|
<root level="INFO">
|
<!--在控制台中输出所在层级对应level(以及大于level)的日志信息,因为这里并没有设置LevelFilter-->
|
<appender-ref ref="STDOUT"></appender-ref>
|
<appender-ref ref="infoAppender"></appender-ref>
|
<appender-ref ref="KAFKA"></appender-ref>
|
<appender-ref ref="errorAppender"></appender-ref>
|
</root>
|
</configuration>
|