參考文章:
https://www.cnblogs.com/warking/p/5710303.html
下面是自己項目中的配置,做個記錄
<!-- 日志相關(guān)包 -->
<!-- Slf4j log interface -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-version}</version>
</dependency>
<!-- commons-logging translate to slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j-version}</version>
</dependency>
<!-- User logback as log output actuator -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback-version}</version>
</dependency>
<configuration>
<!-- 獲取時間戳字符串并格式化 -->
<timestamp key="LOG_TIME" datePattern="yyyy-MM-dd"/>
<!-- property 用于定義變量值 通過${name} 可以用于上下文中 -->
<property name="WEB_NAME" value="Xp02" />
<property name="LOG_PATH" value="日志文件輸出路徑" />
<property name="MAX_HISTORY" value="30"/>
<property name="MAX_SIZE" value="100MB"/>
<property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}][%thread][%level][%logger][%L]%msg%n" />
<!-- 設(shè)置上下文名稱 -->
<contextName>${WEB_NAME}</contextName>
<!-- ConsoleAppender 輸出日志到控制臺 -->
<!-- encoder 對日志進行格式化 -->
<!-- target 字符串system.out或者system.err -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<target>System.out</target>
</appender>
<!-- appender 寫日志的組件 -->
<!-- LevelFilter 級別過濾器 -->
<!-- onMatch 符合過濾條件 -->
<!-- onMismatch 不符合過濾條件 -->
<!-- RollingFileAppender 滾動記錄日志文件 -->
<!-- file 文件名 -->
<!-- true 追加到文件結(jié)尾, false 清空文件內(nèi)容 -->
<!-- TimeBasedRollingPolicy 常用的果凍策略,根據(jù)時間定制滾動策略 -->
<!-- fileNamePattern 必要節(jié)點, 包含文件名和時間,以及制定時間格式 -->
<!-- maxHistory 可選節(jié)點,控制保留的文件最大數(shù)量,超出就刪除舊文件 -->
<!-- maxFileSize 設(shè)置文件的大小 -->
<!-- rollingPolicy 日志分包策略 -->
<!-- TimeBasedRollingPolicy 基于時間的分包策略 -->
<!-- fileNamePattern 根據(jù)此節(jié)點設(shè)置的時間進行分包 -->
<appender name="SYS_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/system-info.log</file>
<append>true</append>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/system-info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAX_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${MAX_HISTORY}</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="SYS_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/system-error.log</file>
<append>true</append>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/system-error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAX_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${MAX_HISTORY}</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="WEB_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/web-info.log</file>
<append>true</append>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/app-info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAX_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${MAX_HISTORY}</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="WEB_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/web-error.log</file>
<append>true</append>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/app-error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${MAX_SIZE}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${MAX_HISTORY}</maxHistory>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- logger 用來設(shè)置某一個包或具體的某一個類的日志打印級別 -->
<!-- name 用來指定受此loger約束的某一個包或者具體的某一個類 -->
<!-- level 設(shè)置打印級別 -->
<logger name="包名" level="INFO" additivity="false">
<appender-ref ref="WEB_INFO"/>
<appender-ref ref="WEB_ERROR"/>
</logger>
<root level="INFO">
<appender-ref ref="SYS_INFO"/>
<appender-ref ref="SYS_ERROR"/>
</root>
</configuration>