java logback將不同的業務日誌輸出到不同的文件存儲

在一個系統中一般都是需要記錄系統日誌的。一方面是對系統運行和用戶訪問的記錄,還有一方面是方便對於問題或錯誤的排查。一般來說將所有的日誌輸出到一個文件中這並沒有什麼問題,直到遇到這樣一個需求:有一些接口請求的日誌需要單獨記錄在一個日誌文件中,方便以後統計或者查看。

所以我們需要這樣來做,一方面原有的日誌記錄保持不變,另一方面我們對日誌模塊稍加改動,來將我們需要的日誌單獨保存。(可以簡單理解爲兩個用戶,第一個用戶記錄系統的日誌,第二個用戶記錄特定的日誌)

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);

這樣特定的日誌就會按照第二步中的文件路徑進行單獨存儲。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章