gpt4 book ai didi

java - Log4j RollingFileAppender 未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 06:22:02 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我必须根据大小维护日志,我已经这样做了,如下代码片段所示,我期望的是每 10MB 之后,就会创建一个新的日志滚轮,例如 Mylog.1.log、Mylog.2.log 等,不幸的是它没有发生。

虽然它创建了 Mylog.1.log,但发布它删除了 Mylog.1.log 并创建了 Mylog.2.log,这这不是预期的行为。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration debug="true"
xmlns:log4j='http://jakarta.apache.org/log4j/'>

<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">

<param name="append" value="true"/>
<param name="file" value="E:/logs/Mylog.log"/>
<param name="MaxFileSize" value="10MB"/>
<param name="MaxBackupIndex" value="10"/>

<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>

<root>
<level value="DEBUG"/>
<appender-ref ref="fileAppender"/>
</root>

环境操作系统:Windows 7应用服务器:IBM Websphere 8编程语言:java

谷歌搜索了很多,结果似乎没有成果,感谢任何帮助。谢谢。

最佳答案

我们有以下 log4j 配置在生产中运行良好。使用的log4j版本是1.2.15

<appender name="FILE_JVM" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="E:/logs/app.log"/>
<param name="maxFileSize" value="20MB"/>
<param name="maxBackupIndex" value="50"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</layout>
</appender>

与你的比较,我只是参数 maxFileSize 和 maxBackupIndex 的情况不同。

我尝试使用 log4j 1.2.17 进行示例,并且能够看到日志与日志目录中的 app.log.1、app.log.2、app.log.3 等文件一起滚动。尝试在你的一端运行它,看看可能缺少什么。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration>

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</layout>
</appender>

<appender name="FILE_JVM" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="E:/Sundry/Projects/Log4jEmailSample/logs/app.log"/>
<param name="maxFileSize" value="1MB"/>
<param name="maxBackupIndex" value="50"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</layout>
</appender>

<!-- the ROOT Logger -->
<root>
<level value="INFO"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE_JVM"/>
</root>

</log4j:configuration>

位于独立应用程序下方

import org.apache.log4j.Logger;

import java.util.concurrent.TimeUnit;

public class MainApp {


public static void main(String[] args) {
Logger logger = Logger.getLogger(MainApp.class);
while (true) {
logMessages(logger);
try {
TimeUnit.MILLISECONDS.sleep(10);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}

private static void logMessages(Logger logger) {
logger.info("Info message");
}

}

我的类路径中唯一的 jar 是 log4j-1.2.17.jar。这对你来说有效吗?

关于java - Log4j RollingFileAppender 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27306986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com