2010-09-29 100 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