首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要一个通过属性配置log4j RollingFileAppender的工作示例

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

Stack Overflow用户
提问于 2010-09-29 16:55:26
回答 4查看 73.4K关注 0票数 12

我使用log4j进行日志记录,使用属性文件进行配置。目前,我的日志文件太大了(3.5GB对于日志文件来说太大了)。因此,我需要使用RollingFileAppender --但是当我这样做时,日志文件继续变得过于庞大。我相信我刚刚把它配置错了;有人有配置RollingFileAppender的工作示例吗?

为了记录在案,我的当前配置如下所示:

代码语言:javascript
复制
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的替代方案也是一个很好的解决方案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-29 17:59:38

--我相信我刚刚把它配置错了;有人有配置RollingFileAppender的工作示例吗?

这对我来说似乎很好。见下文。

您确定您正在使用您认为是的log4j.properties吗?尝试将.File更改为另一条路径,以查看日志输出是否进入新文件。您使用的是什么版本的log4j?我在跑1.2.15。

希望这能有所帮助。

我创建了以下测试程序:

代码语言:javascript
复制
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文件包含:

代码语言:javascript
复制
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

注意,我删除了对我的DatePattern无效的RollingFileAppender。我的布局是:

代码语言:javascript
复制
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,大小为10 up。如果我调优MaxFileSizeMaxBackupIndex,它会进行适当的调整。

票数 17
EN

Stack Overflow用户

发布于 2010-11-03 15:10:08

您的问题可能在于您指定了一个DatePattern。DatePattern用于与DailyRollingFileAppender一起指定日志文件应滚动的日期。我不认为它可以与MaxFileSize和MaxBackupIndex属性一起使用。Log4j允许您根据文件大小或日期滚动文件,但不能两者兼而有之。

票数 5
EN

Stack Overflow用户

发布于 2011-06-01 10:11:40

当我们需要每天滚动日志文件时,我们应该使用DailyRollingFileAppender而不是RollingFileAppender。您不需要指定MaxFileSize限制,而是只需要DatePattern即可根据频率滚动文件。我已经尝试了下面的配置在log4j.properties文件滚动日志文件每分钟。

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

log4j.appender.infoAppender.Threshold=INFO

InfoAppender.DatePattern=‘.’yyyy mm-dd HH

log4j.appender.infoAppender.File=C:/logs/info.log

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3823977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档