gpt4 book ai didi

java - 如何将 RollingFileAppender 更改为配置文件中设置的另一种?

转载 作者:行者123 更新时间:2023-11-30 04:59:13 25 4
gpt4 key购买 nike

我在我的应用程序中使用 log4j,以及一个用于将输出设置到控制台和 rollfileappender 的配置文件。粘贴下面的配置文件。有办法改变吗在代码中打开配置文件后的 fileappender 输出文件?它对我来说打开得很好,但有时我想使用与配置文件中的默认文件不同的输出文件。感谢您的指导。

log4j.rootLogger=info, stdout, RFA

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=[%p] [%d{MM/dd/yyyy HH:mm:ss}] - %m %n

log4j.appender.RFA=org.apache.log4j.RollingFileAppender
log4j.appender.RFA.File=${user.home}/output.log

log4j.appender.RFA.MaxFileSize=100KB
# Keep backup files
log4j.appender.RFA.MaxBackupIndex=5

log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
log4j.appender.RFA.layout.ConversionPattern=[%p] [%d{MM/dd/yyyy HH:mm:ss}] - %m %n

最佳答案

如果您打算从代码中编辑属性文件并让 log4j 检测到它,则必须首先通过调用 PropertyConfigurator.configureAndWatch("log4j.properties") 让 log4j 监视属性文件

但是,我更喜欢使用像 kunal 提到的那样的 Logger api 以编程方式访问附加程序。

更新;以编程方式执行此操作的代码

Enumeration allAppenders = Logger.getRootLogger().getAllAppenders();
while (allAppenders.hasMoreElements()) {
Object object = (Object) allAppenders.nextElement();
if (object instanceof RollingFileAppender) {
RollingFileAppender appender = (RollingFileAppender) object;
appender.setFile("/path/to/new/file.log");
appender.activateOptions();
break;
}
}

关于java - 如何将 RollingFileAppender 更改为配置文件中设置的另一种?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7505156/

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