在运行时,我经常创建/修改 log4j 记录器,添加器,级别,布局,并且有时需要将所有内容重置为默认值。
Log4j 系统具有定义良好的 Default Initialization Procedure ,当将 log4j 类加载到内存时执行。有什么方法可以稍后在运行时以编程方式重新执行整个过程吗?
我在 log4j 文档中发现了几种resetConfiguration()
方法,但是不确定它们中的任何一种是否可以完成 Default Initialization Procedure 的工作:
BasicConfigurator.resetConfiguration();
Hierarchy.resetConfiguration();
LogManager.resetConfiguration();
我们欢迎您提供其他有关重置 log4j 配置的建议!谢谢。
最佳答案
根据documentation的doConfigure
方法:
从文件中读取配置。 不会清除现有配置,也不会重置。如果您需要其他行为,请在调用doConfigure 之前先调用resetConfiguration
方法。
因此,我相信调用LogManager.resetConfiguration()
并使用与启动时相同的文件来调用PropertyConfigurator.configure()
会做您想要的。resetConfiguration()
方法记录在Hierarchy类中。
关于java - 如何重新执行Log4j “Default Initialization Procedure”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4686531/