1. 程式人生 > >logback輸出多個日誌檔案

logback輸出多個日誌檔案

以前一直用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中,並按策略生成,以供分析

總結:

充分利用開源元件的特性,而且功能豐富

程式碼只寫一行,大提高了生產效率