2015年1月15日 星期四

使用JCL與Log4j2紀錄log



使用 JCL 與 Log4j2 紀錄 log (教學)


使用 JCL 版本為

Apache Commons Logging 1.2




使用Log4j2 版本為

Apache Log4j 2






以Eclipse來舉例:

在你的Java Project 上開啟 Properties視窗
Properties -> Java Build Path -> Libraries -> Add External JARs..

加入以下 jar 檔
  • og4j-api-2.1.jar
  • log4j-core-2.1.jar

然後在路徑 src 內新增一個XML檔,檔名 log4j2.xml

如果需要設定log的檔案名稱

經由操控檔名
可以做到

File Name format by hour
filePattern="logs/log-%d{yyyyMMdd-HH}.log"
File Name format by minute
filePattern="logs/log-%d{yyyyMMdd-HHmm}.log"
File Name format by second
filePattern="logs/log-%d{yyyyMMdd-HHmmss}.log"
File Name format by millisecond 
filePattern="logs/log-%d{yyyyMMdd-HHmmss.SSS}.log"

如果單一檔案超過10MB,檔名的i++
filePattern="logs/log-%d{yyyyMMdd-HH}~%i.log"


設定檔範例 log4j2.xml




<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <!-- Console & SYSTEM_OUT format by pattern-->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
        </Console>
        <!-- DailyFile & Log file Name format by pattern-->
        <RollingFile
            name="DailyFile" fileName="logs/Teemo-log.log"
            filePattern="logs/log-%d{yyyyMMdd-HH}~%i.log">
            <PatternLayout>
                <Pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss} [%t] %c{1} - %msg%n
                </Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="org.apache.log4j.xml" level="info" />
        <Root level="debug">
            <AppenderRef ref="Console" />
            <AppenderRef ref="DailyFile" />
        </Root>
    </Loggers>
</Configuration>




範例程式
package main;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class UsingLog4j2AndJCL {

 protected static Log log = LogFactory.getLog(UsingLog4j2AndJCL.class);
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  log.info("Hello, World!"); 
  log.error("Hello, World!");       
 }

}





相關資料可以參考

[JAVA][log4j] 詳細設定




熱門文章