需要一个通过属性配置log4j RollingFileAppender的工作示例

mch*_*erm 12 log4j rollingfileappender

我使用log4j进行日志记录,使用属性文件进行配置.目前,我的日志文件太大(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
Run Code Online (Sandbox Code Playgroud)

RollingFileAppender的替代方案也是一个很好的解决方案.

Gra*_*ray 17

我相信我错误配置了它; 有没有人有一个配置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!!!!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的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
Run Code Online (Sandbox Code Playgroud)

请注意,我删除了对我的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() {
    }
}
Run Code Online (Sandbox Code Playgroud)

-Dcatalina.base=/tmp//tmp/logs/一起运行获取索引#5的文件,大小为10mb.如果我调整MaxFileSizeMaxBackupIndex调整,它会适当调整.


Hun*_*r.C 5

您的问题可能在于您指定了DatePattern.DatePattern旨在与DailyRollingFileAppender一起使用,以指定日志文件应滚动的日期.我不相信它可以与MaxFileSize和MaxBackupIndex属性一起使用.Log4j允许您根据文件大小或日期滚动文件,但不能同时滚动两者.