2014-09-24 76 views
1

在Java 8應用程序中使用org.apache.log4j,我想要每小時創建一個新的日誌文件,例如:「mylog.log.2014-09-24- 18" 。 我讀了我需要使用DailyRollingFileAppender,但是當我啓動應用程序時,日誌文件被命名爲「mylog.log」。log4j DailyRollingFileAppender不會創建帶日期模式的文件

這是我的log4j.properties文件的內容:

# Set root logger level and its appenders 
log4j.rootLogger=DEBUG, file 

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH 
log4j.appender.file.Append=true 
log4j.appender.file.File=mylog.log 
log4j.appender.file.encoding=UTF-8 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

能否請你讓我知道我能做到這一點?

回答

3

我將DatePattern設置爲log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH-mm,當我第一次登錄時,日誌寫入mylog.log,一分鐘後,日誌寫入mylog.log.2014-09-24-10-42。因此,我認爲您的日誌第一次寫入mylog.log,一小時後,系統將生成一個名爲'mylog.log.2014-09-24-10'的文件。

+0

你絕對正確。我錯誤地認爲該文件是使用日期模式立即創建的。 – Javide 2014-09-24 03:32:23

2

從我的理解,你要找的是你想要的文件名中已經創建日期/時間的活動日誌文件,一旦需要滾動,它將簡單地登錄到一個新的文件與最新的日期/時間在文件名中。

如果我的理解是正確的,我不知道是否log4j 1.x可以做你正在尋找的東西。

Log4J只是寫入mylog.log並且在滾動時,它將原始mylog.log移動到mylog.log.yyyy-mm-dd,然後再次創建一個新的mylog.log

如果您正在使用SLF4J,如果沒有特別的理由讓你堅持到Log4J的作爲後端,Logback實際上是爲您在找什麼:

http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy

略去file財產RollingFileAppender,並在TimeBasedRollingPolicy中設置文件模式。日誌文件的創建方式將成爲您的期望。