使用 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) {
  
  log.info("Hello, World!"); 
  log.error("Hello, World!");       
 }
}