在一個系統中一般都是需要記錄系統日誌的。一方面是對系統運行和用戶訪問的記錄,還有一方面是方便對於問題或錯誤的排查。一般來說將所有的日誌輸出到一個文件中這並沒有什麼問題,直到遇到這樣一個需求:有一些接口請求的日誌需要單獨記錄在一個日誌文件中,方便以後統計或者查看。
所以我們需要這樣來做,一方面原有的日誌記錄保持不變,另一方面我們對日誌模塊稍加改動,來將我們需要的日誌單獨保存。(可以簡單理解爲兩個用戶,第一個用戶記錄系統的日誌,第二個用戶記錄特定的日誌)
1.首先配置好正常的日誌文件(logback.xml)
2.在logback.xml中添加我們定義的日誌輸出模塊
//不同業務日誌記錄到不同的文件
<appender name="zhangsanAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>logs/業務A.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>logs/業務A.%d.%i.log</fileNamePattern>
<maxHistory>90</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level [%thread] [%c{0}:%L] : %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
//這是我們定義的訪問日誌傳入的名稱
<logger name="zhangsanLog" additivity="false" level="INFO">
<appender-ref ref="zhangsanAppender"/>
</logger>
3.調用格式
//正常的日誌聲明
private final Logger logger= LoggerFactory.getLogger(this.getClass());
//記錄特定日誌的聲明
private final Logger newLogger = LoggerFactory.getLogger("zhangsanLog");
//正常的日誌存儲
logger.info("查看汽車的用戶: " + phone);
//特定的日誌存儲
newLogger.info("查看寶馬汽車的用戶: " + phone);
這樣特定的日誌就會按照第二步中的文件路徑進行單獨存儲。