logback輸出多個日誌檔案
阿新 • • 發佈:2019-01-07
以前一直用slf4j+logback作為應用程式的日誌元件,部署時,將日誌輸入到檔案,以備檢視。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>bau.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/xxx.%d{yyyy-MM-dd}.log.zip</fileNamePattern> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%-20(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{80} - %msg%n</pattern> </encoder> </appender> <root level="WARN"> <appender-ref ref="file" /> </root> </configuration>
最近一個專案中,需要將系統的一些資訊記錄到檔案中,考慮到以後可能會加一些需求,如日誌的格式,日誌按一定大小切割,還是按時間切割等,手工寫起來還是比較煩瑣的。
考慮到logback中已經有此功能。於是查了下文件:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>bau.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/xxx.%d{yyyy-MM-dd}.log.zip</fileNamePattern> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%-20(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{80} - %msg%n</pattern> </encoder> </appender> <appender name="event" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>E:\\event.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>E:\\event.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%msg%n</pattern> </encoder> </appender> <logger name="cn.company.bau.desktop.composite.EventRealTimeComposite" level="INFO" additivity="false"> <appender-ref ref="event" /> </logger> <root level="WARN"> <appender-ref ref="file" /> </root> </configuration>
新增一個event的appender名字叫event,新加一個logger,將其apender指定為event,指定其level為INFO,additivity="false"這個最重要,指定日誌不向上一級輸入。
之後,在類cn.company.bau.desktop.composite.EventRealTimeComposite中,就可以用logger.info("xxx")輸出日誌,日誌會記錄到event.log中,並按策略生成,以供分析
總結:
充分利用開源元件的特性,而且功能豐富
程式碼只寫一行,大提高了生產效率