一般大家應該都是用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} 之類的, 有問題歡迎提出討論, 或指教^^