需要一个通过属性配置log4j RollingFileAppender的工作示例吗
我使用log4j进行日志记录,并使用属性文件进行配置。目前,我的日志文件太大(3.5 GB对于日志文件来说太大)。因此,我认为我需要使用RollingFileAppender,但当我这样做时,日志文件继续变得过大。我相信我只是误解了它;有人有配置RollingFileAppender的工作示例吗 我的当前配置如下所示:需要一个通过属性配置log4j RollingFileAppender的工作示例吗,log4j,rollingfileappender,Log4j,Rollingfileappender,我使用log4j进行日志记录,并使用属性文件进行配置。目前,我的日志文件太大(3.5 GB对于日志文件来说太大)。因此,我认为我需要使用RollingFileAppender,但当我这样做时,日志文件继续变得过大。我相信我只是误解了它;有人有配置RollingFileAppender的工作示例吗 我的当前配置如下所示: log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log log4j.appender.MAIN_LOG=org
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的替代方案也是一个很好的解决方案
我相信我只是误解了它;有人有配置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!!!!");
}
}
}
请注意,我删除了对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。如果我调整了MaxFileSize
或MaxBackupIndex
,它会进行适当的调整。您的问题可能是指定了一个日期模式。
DatePattern用于DailRollingFileAppender,以指定日志文件应滚动的日期。
我不相信它可以与MaxFileSize和MaxBackupIndex属性结合使用。
Log4j允许您根据文件大小或日期滚动文件,但不能同时基于文件大小或日期滚动文件。当我们需要每天滚动日志文件时,我们应该使用DailRollingFileAppender而不是RollingFileAppender。 您不需要指定MaxFileSize限制,仅DatePattern就足以基于频率滚动文件。 我在log4j.properties文件中尝试了以下每分钟滚动日志文件的配置 log4j.appender.infoAppender=org.apache.log4j.DailyRollingFileAppender log4j.appender.infoAppender.Threshold=INFO log4j.appender.infoAppender.DatePattern='.'yyyy-MM-dd-HH-MM log4j.appender.infoAppender.File=C:/logs/info.log
首先设置
-Dlog4j.debug
JVM参数。这将打印出几行有用的调试信息,显示它找到并正在使用的配置文件,等等。这将为您提供一些出错的线索
请看也许,事实上,我的问题比仅仅“我没有正确配置它”更复杂。我将尝试使用您提供给我的这个极好的示例,看看是否可以复制问题并从那里继续。DailyRollingFileAppender已被观察到出现同步问题和数据丢失。log4j extras companion包括新部署应考虑的备选方案,这些方案在org.apache.log4j.rolling.RollingFileAppender的文档中进行了讨论。从这里开始:
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() {
}
}