gpt4 book ai didi

java - log4j 中每次都重写到相同的日志文件

转载 作者:行者123 更新时间:2023-12-01 12:17:52 24 4
gpt4 key购买 nike

我有一个产品,用它来运行我的应用程序(我编写的)。它是一种访问单个日志文件的多线程应用程序。我面临的问题是每次启动应用程序日志文件都会被附加。仅当我重新启动产品时,才会创建新的日志文件。但我希望每次运行应用程序时,我只需要日志文件中包含新鲜内容。

下面是代码。

//Log4j initialization
public void initLog4j() throws MyException {

if (logfile != null ){
myLog4j = Logger.getLogger("MY_LOG");
try {
appender = new FileAppender(new PatternLayout("%m%n"),logfile.getAbsolutePath(),false);
appender.setAppend(false);
myLog4j.addAppender(appender);
myLog4j.setLevel((Level) Level.DEBUG);
} catch (IOException e) {
throw new MyException(104, logfile.getAbsolutePath());
}

}

//Stopping to write to log4j
public void stop() {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
writeToLog4j(INFO,new StringBuilder(name).append(" stop: ").append(dateFormat.format(new Date())).toString(),true);
}

到目前为止,我尝试删除该文件,但由于 FileDescriptor 未释放,因此它没有删除。所以我在 stop() 函数中添加了以下代码

if(null != appender) {
appender.close();
}

生成此新文件或覆盖现有文件后。但是每次运行我的应用程序时,每次尝试写入日志文件时都会收到以下消息

log4j:ERROR 试图附加到名为 [null] 的已关闭附加程序。

请有人帮我解决这个问题。

最佳答案

错误消息表明您必须在关闭附加程序后将其删除。看来 log4j 不会自动执行此操作。

关于java - log4j 中每次都重写到相同的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26883282/

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