log4j将属性重置为原始文件,如log4j.properties文件中所示

gme*_*eka 2 java configuration log4j

在我的应用程序中,我按如下方式定义了log4j.properites

log4j.appender.email=org.apache.log4j.net.SMTPAppender
log4j.appender.email.Subject=email Notification
Run Code Online (Sandbox Code Playgroud)

后来在程序中我动态地将主题改为

Properties prop = new Properties();
prop.setProperty("log4j.appender.email.Subject", "Test Completed");
Run Code Online (Sandbox Code Playgroud)

使用此变量后,我想将其重置为原始文件.所以我这样做了

LogManager.resetConfiguration();
PropertyConfigurator.configure(prop);
Run Code Online (Sandbox Code Playgroud)

但是,每当我使用这个主题属性时,代码后面的代码都将其值作为"Test Completed".任何重置配置的建议都非常感谢.谢谢

Sir*_*off 5

正如我上面的评论所述

LogManager.resetConfiguration();
PropertyConfigurator.configure(prop);
Run Code Online (Sandbox Code Playgroud)

不要重新配置现有的Logger实例,以便它们仍然使用旧的EmailAppender.为了使更改生效,您应该重新创建记录器.如果不可能(例如你的记录器是静态的最终字段),你可以创建一个简单的Logger包装器,它将自己注册一些监听器,它将通知配置更改,这样包装器就可以创建新的记录器实例