[SLF4J + logback ] FileAppender 設定分享 (sourcecode , xml )

全熒幕_2015_9_2_22_20

  一般大家應該都是用ommons-logging(JCL) 跟 log4j

這次特別用了一下 slf4j + logback

其實slf4j跟commons-logging差不多,只是可以讓我們更彈性的更改不同的logging實做

另外 logback 其實跟 log4j 類似,都是籍由config 設定

這邊跟大家分享一下我的設定方法^^

首先必須要有三個jar 檔,  版本不一定要跟我的一樣

logback-classic-1.1.3.jar

logback-core-1.1.3.jar

slf4j-api-1.7.12.jar

然後必須要有一個xml,  位置放在src下即可

logback.xml


logback.xml 

<?xmlversion="1.0"encoding="UTF-8"?>
<configuration>
	<!-- 設定日期格式 -->
	<timestamp key="byDate" datePattern="yyyyMMdd" />
	<!-- 設定ConsoleAppender-->
	<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - %-5level- %msg %n</Pattern>
		</encoder>
		
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
		</filter>
	</appender>
	<!--設定 FileAppender-->
        <appender name="pDC010PMAppender" class="ch.qos.logback.core.FileAppender">
	
		<File>/opt/GPRS-PM/logs/Test_SLF4J.log.${byDate}</File>
		
		<encoder>
			<Pattern>%msg %n</Pattern>
		</encoder>
		
		<append>true</append>
		<prudent>false</prudent>
	</appender>

        <logger name="gprs.pm.PDC010" additivity="false">
		<level value="INFO" />
		<appender-ref ref="pDC010PMAppender" />
		<appender-ref ref="consoleAppender" />
	</logger>

        <root>
		<level value="WARN" />
		<appender-ref ref="gprsPMAppender" />
		<appender-ref ref="consoleAppender" />
	</root>

</configuration>


另外建立一支 class 設定名稱, 這裡的名稱與logback.xml 裡面的名稱是對應的!! 可以稍微看一下

 CommonConst.java

public class CommonConst {

	public static final String PDC010 = "gprs.pm.PDC010";

}

ParseGPRSLog.java

 
public class ParseGPRSLog {

	private static Logger pdc010log = LoggerFactory.getLogger(CommonConst.PDC010);

        public static void main (String[] args){

             pdc010log.info("Test SLF4J Successful!!!!");
        }
}


跑出來的結果如下:

log file name  :Test_SLF4J.log.20150902

內容: Test SLF4J Successful!!!!

有人可能覺得奇怪,  為什麼內容不像log?
 
一般log 不是都長這樣嗎  -->2015-09-02 17:59:39.056 [main] INFO  - Test SLF4J Successful!!

 

因為目的只要看到寫入的東西, 所以 encoder 的Pattern 只有簡單設定成印出msg 與換行

想要日期的可以自己加入例如 %{yyyy/MM/dd HH:mm:ss} 之類的, 有問題歡迎提出討論, 或指教^^