企業級日誌配置
不整沒用的,擼代碼
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="10 seconds" debug="false">
<!-- set env -->
<property name="LOGDROOT" value="${catalina.home}"/><!--tomcat目錄-->
<property name="APP_NAME" value="XM"/><!--項目名稱-->
<!--日誌路徑-->
<property name="DEBUG_LOG_PATH" value="${LOGDROOT}/logs/${APP_NAME}_debug"/>
<property name="INFO_LOG_PATH" value="${LOGDROOT}/logs/${APP_NAME}_info"/>
<property name="WARN_LOG_PATH" value="${LOGDROOT}/logs/${APP_NAME}_warn"/>
<property name="ERROR_LOG_PATH" value="${LOGDROOT}/logs/${APP_NAME}_error"/>
<property name="DAY_LOG_PATH" value="${LOGDROOT}/logs/${APP_NAME}"/>
<!--日誌輸出格式-->
<property name="LOG_PATTERN_CONSOLE"
value="[%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c:%L] [%thread] [%X{traceId}] %m%n"/>
<property name="LOG_PATTERN_FILE"
value="[%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c:%L] [%thread] [%X{traceId}] %m%n"/>
<property name="CALC_BILL_LOG_PATTERN_FILE" value="%m%n"/>
<!--可選節點,控制保留的歸檔文件的最大數量,超出數量就刪除舊文件,假設設置每個月滾動,刪除之前的舊文件-->
<property name="MAXHISTORY" value="30"/>
<!--設置日誌存儲最大值-->
<property name="MAXFILESIZE" value="500MB"/>
<!-- 性能相關 -->
<property name="PERF_LOG_PATH" value="${LOGDROOT}/logs/${APP_NAME}_perf"/>
<!-- set context name -->
<contextName>${APP_NAME}</contextName>
<!-- console -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN_CONSOLE}</pattern>
</encoder>
</appender>
<!-- debug level -->
<appender name="debug"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- file name -->
<File>${DEBUG_LOG_PATH}.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--output file name -->
<fileNamePattern>${DEBUG_LOG_PATH}.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<!-- MAXHISTORY days old files will be delete -->
<maxHistory>${MAXHISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAXFILESIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN_FILE}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- info level -->
<appender name="info"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${INFO_LOG_PATH}.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${INFO_LOG_PATH}.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<maxHistory>${MAXHISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAXFILESIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN_FILE}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- warn level -->
<appender name="warn"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${WARN_LOG_PATH}.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${WARN_LOG_PATH}.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<maxHistory>${MAXHISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAXFILESIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN_FILE}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- error level -->
<appender name="error"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${ERROR_LOG_PATH}.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${ERROR_LOG_PATH}.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<maxHistory>${MAXHISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAXFILESIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN_FILE}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 每日輸出 -->
<appender name="day_log"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${DAY_LOG_PATH}.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${DAY_LOG_PATH}.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<maxHistory>${MAXHISTORY}</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAXFILESIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN_FILE}</pattern>
</encoder>
</appender>
<!-- 異步輸出 -->
<appender name="dayLogAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
<includeCallerData>true</includeCallerData>
<!-- 不丟失日誌.默認的,如果隊列的80%已滿,則會丟棄TRACT、DEBUG、INFO級別的日誌 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默認的隊列的深度,該值會影響性能.默認值爲256 -->
<queueSize>512</queueSize>
<appender-ref ref="day_log"/>
</appender>
<!-- spring -->
<logger name="org.springframework" level="info"/>
<logger name="com.dome" level="info" additivity="false">
<appender-ref ref="error"/>
<appender-ref ref="warn"/>
<appender-ref ref="console"/>
</logger>
<!-- lookback -->
<logger name="lookbackLogger" level="info" additivity="false">
<appender-ref ref="console"/>
<appender-ref ref="lookbackAppender"/>
</logger>
<!-- root -->
<root level="info">
<appender-ref ref="info"/>
<appender-ref ref="warn"/>
<appender-ref ref="error"/>
<appender-ref ref="console"/>
</root>
</configuration>