2010-09-29 85 views
10

我使用log4j來進行日誌記錄屬性log4j的RollingFileAppender進行,以及配置的屬性文件的工作示例。目前,我的日誌文件太大(3.5 GB對於日誌文件來說太大)。所以認爲我需要使用RollingFileAppender進行 - 但是當我這樣做日誌文件的持續增長過大。我相信我只是錯誤配置了它;有沒有人有工作配置RollingFileAppender的例子?需要通過配置

爲了記錄在案,我目前的配置是這樣的:

log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log 
log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender 
log4j.appender.MAIN_LOG.layout=com.mycompany.util.log.Log4JSimpleLayout 
log4j.appender.MAIN_LOG.DatePattern='.'yyyy-MM-dd 
log4j.appender.MAIN_LOG.MaxFileSize=10MB 
log4j.appender.MAIN_LOG.MaxBackupIndex=99 
log4j.appender.MAIN_LOG.append=true 
log4j.rootCategory=ALL, MAIN_LOG 

至RollingFileAppender進行的替代也將是一個精解。

回答

15

我相信我剛纔錯誤配置它;有沒有人有配置RollingFileAppender的工作示例?

這似乎爲我工作的罰款@mcherm。見下文。

您是否當然您使用的是您認爲自己的log4j.properties?嘗試將.File更改爲另一個路徑,以查看日誌輸出是否轉到新文件。你使用的是什麼版本的log4j?我正在運行1.2.15。

希望這會有所幫助。


我創建了以下測試程序:

package com.j256.ormlite; 
import org.apache.log4j.Logger; 
public class Foo { 
    private static Logger logger = Logger.getLogger(Foo.class); 
    public static void main(String[] args) { 
     for (int x = 0; x < 10000000; x++) { 
      logger.error("goodness this shouldn't be happening to us right here!!!!"); 
     } 
    } 
} 

我log4j.properties文件認爲:

log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender 
log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log 
log4j.appender.MAIN_LOG.layout=com.j256.ormlite.Log4JSimpleLayout 
log4j.appender.MAIN_LOG.MaxFileSize=10MB 
log4j.appender.MAIN_LOG.MaxBackupIndex=5 
log4j.appender.MAIN_LOG.append=true 
log4j.rootCategory=ALL, MAIN_LOG 

注意,我刪除了這是無效的我的RollingFileAppender進行了DatePattern。我的佈局:

package com.j256.ormlite; 
import org.apache.log4j.spi.LoggingEvent; 
public class Log4JSimpleLayout extends org.apache.log4j.Layout { 
    @Override 
    public String format(LoggingEvent event) { 
     return "log message = " + event.getMessage().toString() + "\n"; 
    } 
    @Override 
    public boolean ignoresThrowable() { 
     return true; 
    } 
    public void activateOptions() { 
    } 
} 

-Dcatalina.base=/tmp/跑我得到/tmp/logs/文件哪去了索引#5,並且在大小爲10MB。如果我調整了MaxFileSizeMaxBackupIndex,它會適當調整。

+0

也許,的確,我的問題是不僅僅是一個更加複雜的「我沒有配置是正確的」。我會嘗試以你提供給我的這個*精彩例子,看看我是否可以複製問題並從那裏開始。 – mcherm 2010-09-29 18:43:15

5

你的問題可能是與事實,你指定一個DatePattern。 DatePattern旨在與DailyRollingFileAppender一起使用,以指定日誌文件應滾動的日期。 我不相信它可以與MaxFileSize和MaxBackupIndex屬性一起使用。 Log4j允許您根據文件大小或日期來滾動文件,但不能同時滾動文件。

2

當我們需要日誌文件被每天的基礎上推出,我們應該使用RollingFileAppender進行的DailyRollingFileAppender代替。 您不需要指定MaxFileSize限制,而只需要根據頻率對文件進行滾動即可。 我已經在log4j.properties文件中試過每分鐘滾動日誌文件的下面的配置。

log4j.appender.infoAppender = org.apache.log4j.DailyRollingFileAppender

log4j.appender.infoAppender。閾值=信息

log4j.appender.infoAppender.DatePattern ='。' YYYY-MM-DD HH-毫米

log4j.appender.infoAppender.File = C:通過設置-Dlog4j.debug JVM參數/logs/info.log

+1

DailyRollingFileAppender被發現存在同步問題和數據丟失。 log4j extras伴侶包括應該在新部署中考慮的替代方法,這些替代方法在org.apache.log4j.rolling.RollingFileAppender的文檔中討論。 從這裏: http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html – Somatik 2011-12-26 15:09:00