gpt4 book ai didi

java - 在运行时更改 log4j 属性文件导致创建一个空的默认日志

转载 作者:搜寻专家 更新时间:2023-11-01 03:43:46 25 4
gpt4 key购买 nike

我有一个使用 log4j 登录文本文件的应用程序,我在包含默认日志配置参数的可执行 jar 文件中放置了一个 log4j.properties 文件。

我的 log4j.properties 文件如下所示:

log4j.rootLogger=INFO, A1
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.File=mylogfile.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{dd/MM/yyyy HH\:mm\:ss,SSS} %-5p [%t] - %m%n

我的应用程序还有一个命令行选项,允许用户更改日志文件名,所以我有一个像下面这样的函数可以在运行时更改 log4j 的设置:

public void changeLogFileName(String filename) {    
props.setProperty("log4j.appender.A1","org.apache.log4j.DailyRollingFileAppender");
props.setProperty("log4j.appender.A1.DatePattern","'-'ddMMyyyy");
props.setProperty("log4j.appender.A1.File",filename);
LogManager.resetConfiguration();
PropertyConfigurator.configure(props);
}

一切正常,除非当声明 LogManager.resetConfiguration() 和/或 PropertyConfigurator.configure(props) 执行默认的空日志文件( mylogfile.log) 是自动创建的。之后,我从我的应用程序中记录的所有内容都将正确写入新文件中,但无论如何都会创建一个空文件(使用 log4j.properties 中的默认日志文件名)。

有没有办法避免创建空的默认日志文件?

最佳答案

我终于开发了 log4j-additions允许创建延迟初始化附加程序的库,避免创建空日志文件。

log4.properties

#Lazy File Appender
log4j.appender.A1=org.pollerosoftware.log4j.additions.appenders.LazyFileAppender
log4j.appender.A1.File=juakaritoglory.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{dd/MM/yyyy HH\:mm\:ss,SSS} %-5p [%t] - %m%n

改变路径的方法

/**
* Change the path of log file
* @param path new path
*/
public synchronized void changeLogPath(String path) {
String filename = (path.endsWith(File.separator)) ? path : path + File.separator;
filename += LOGFILENAME + "-{timestamp}.log";

props.setProperty("log4j.appender.A1","org.pollerosoftware.log4j.additions.appenders.TimestampFileAppender");
props.setProperty("log4j.appender.A1.TimestampPattern","ddMMyyyy");
props.setProperty("log4j.appender.A1.File",filename);
LogManager.resetConfiguration();
PropertyConfigurator.configure(props);
}

关于java - 在运行时更改 log4j 属性文件导致创建一个空的默认日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053684/

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