在运行时,我经常创建/修改 log4j Logger,Appenders,Levels,Layouts,并且有时需要将所有内容重置为默认值。
Log4j 系统具有定义明确的 默认初始化过程 ,该 过程 在将 log4j 类加载到内存时执行。有什么方法可以稍后在运行时以编程方式重新执行整个过程吗?
我resetConfiguration()在 log4j 文档中找到了几种方法,但是不确定它们中的任何一种是否可以执行 默认初始化过程所 要做的工作:
resetConfiguration()
BasicConfigurator.resetConfiguration();
Hierarchy.resetConfiguration();
LogManager.resetConfiguration();
欢迎提供有关重置 log4j 配置的其他建议!谢谢。
根据该方法的文档doConfigure:
doConfigure
从文件中读取配置。 现有配置不会清除或重置 。如果您需要其他行为, 请resetConfiguration在调用doConfigure之前先调用method。
resetConfiguration
因此,我相信使用与启动时相同的文件进行调用LogManager.resetConfiguration()和重新调用PropertyConfigurator.configure()将满足您的要求。
LogManager.resetConfiguration()
PropertyConfigurator.configure()
该resetConfiguration()方法记录在Hierarchy类中。