动态更改 log4j 日志级别的不同方法是什么,这样我就不必重新部署应用程序。在这些情况下,这些变化会是永久性的吗?
原文由 Ravi 发布,翻译遵循 CC BY-SA 4.0 许可协议
Log4j 能够观察 log4j.xml
文件的配置更改。如果您更改 log4j 文件,log4j 将根据您的更改自动刷新日志级别。有关详细信息,请参阅 org.apache.log4j.xml.DOMConfigurator.configureAndWatch(String,long
的文档。检查之间的默认等待时间为 60 秒。这些更改将是持久的,因为您直接更改文件系统上的配置文件。您需要做的就是调用 DOMConfigurator.configureAndWatch() 一次。
注意:由于线程泄漏,configureAndWatch 方法在 J2EE 环境中使用是不安全的
另一种设置日志级别(或一般重新配置)log4j 的方法是使用 JMX。 Log4j 将其记录器注册为 JMX MBean。使用应用程序服务器 MBeanServer 控制台(或 JDK 的 jconsole.exe),您可以重新配置每个单独的记录器。这些更改不是持久的,并且会在您重新启动应用程序(服务器)后重置为配置文件中设置的配置。
正如 Aaron 所述,您可以通过编程方式设置日志级别。您可以按照您希望的方式在您的应用程序中实现它。例如,您可以有一个 GUI,用户或管理员可以在其中更改日志级别,然后在记录器上调用 setLevel()
方法。您是否将设置保留在某处取决于您。
原文由 mhaller 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
更改日志级别很简单;修改配置的其他部分将构成更深入的方法。
这些更改在
Logger
的生命周期中是永久性的。在重新初始化时,配置将被读取并使用,因为在运行时设置级别不会保留级别更改。更新: 如果您使用的是 Log4j 2,则应根据 文档 删除对
setLevel
的调用,因为这可以通过实现类来实现。