<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds"><property name="LOG_HOME" value="/data/logs/sys_admin"/><property name="ENCODER_PATTERN"value="%d{yyyy-MM-dd HH:mm:ss.SSS} %X{traceId} %level %logger{0} [%t] %m%n"/><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${ENCODER_PATTERN}</pattern></encoder></appender><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><Append>true</Append><file>${LOG_HOME}/sys_info.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${LOG_HOME}/sys_info.log.%d{yyyy-MM-dd}</FileNamePattern><MaxHistory>30</MaxHistory></rollingPolicy><encoder><pattern>${ENCODER_PATTERN}</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><Append>true</Append><file>${LOG_HOME}/sys_error.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${LOG_HOME}/sys_error.log.%d{yyyy-MM-dd}</FileNamePattern><MaxHistory>30</MaxHistory></rollingPolicy><encoder><pattern>${ENCODER_PATTERN}</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><Append>true</Append><file>${LOG_HOME}/sys_warn.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${LOG_HOME}/sys_warn.log.%d{yyyy-MM-dd}</FileNamePattern><MaxHistory>30</MaxHistory></rollingPolicy><encoder><pattern>${ENCODER_PATTERN}</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><Append>true</Append><file>${LOG_HOME}/sys_debug.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${LOG_HOME}/sys_debug.log.%d{yyyy-MM-dd}</FileNamePattern><MaxHistory>30</MaxHistory></rollingPolicy><encoder><pattern>${ENCODER_PATTERN}</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="trace" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>/data/logs/trace/trace.log</file><Append>true</Append><encoder><pattern>%msg%n</pattern><charset>UTF-8</charset></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>/data/logs/trace/trace.log.%d{yyyy-MM-dd-HH}</FileNamePattern><MaxHistory>1</MaxHistory></rollingPolicy></appender><appender name="async-trace" class="ch.qos.logback.classic.AsyncAppender"><discardingThreshold>80</discardingThreshold><queueSize>512</queueSize><appender-ref ref="trace"/></appender><logger name="cn.system.trace.utils.SpanLogger" additivity="false"><level value="INFO"/><appender-ref ref="async-trace"/></logger><logger name="cn.system.jade.datasource.SQLParseInfo" additivity="false"><level value="INFO"/><appender-ref ref="WARN_FILE"/></logger><root><level value="INFO"/><appender-ref ref="STDOUT"/><appender-ref ref="INFO_FILE"/><appender-ref ref="WARN_FILE"/><appender-ref ref="ERROR_FILE"/><appender-ref ref="DEBUG_FILE"/></root>
</configuration>