Java log4j 2-在运行时更改J2EE应用程序的配置

Java log4j 2-在运行时更改J2EE应用程序的配置,java,jakarta-ee,log4j,Java,Jakarta Ee,Log4j,目前,我们有运行在WebSphere上的J2EE应用程序,log4j 1.x是我们公司的Java日志标准。我们希望研究在运行时更改log4j配置xml文件的能力,这样我们就可以更改到调试级别,例如,当发现问题时,并在这些问题被清除并且不再需要调试时返回到错误级别。我们希望这样做,而不必回收应用程序来重新读取配置文件 我看到DOMConfigurator.configureandWatch()是一个允许在运行时重新读取配置文件的可用方法。但是,由于它产生了一个单独的线程,在应用程序关闭时不会关闭该

目前,我们有运行在WebSphere上的J2EE应用程序,log4j 1.x是我们公司的Java日志标准。我们希望研究在运行时更改log4j配置xml文件的能力,这样我们就可以更改到调试级别,例如,当发现问题时,并在这些问题被清除并且不再需要调试时返回到错误级别。我们希望这样做,而不必回收应用程序来重新读取配置文件

我看到DOMConfigurator.configureandWatch()是一个允许在运行时重新读取配置文件的可用方法。但是,由于它产生了一个单独的线程,在应用程序关闭时不会关闭该线程,因此在J2EE环境中运行是不安全的


有人知道这是不是在log4 2中修复的吗?我还没有从文档中找到任何明确的信息,我很好奇在J2EE中运行时更改配置文件是否安全。

重新读取配置文件不是您希望在生产中执行的操作。这意味着你正在改变许多应用服务器都不希望改变的资源。开发环境可以侥幸逃脱,因为炸毁应用服务器并不是什么大事。这也意味着,如果必须重新启动应用程序,它的行为可能会有所不同


您需要以编程方式更改日志级别。对于您关心的包,可以使用
LogManager.getLogger()
来实现这一点。拥有记录器后,将级别更改为debug,并在完成后将其更改回debug

谢谢你,马克。我希望它能像修改配置文件一样简单,但这看起来绝对是更安全的解决方案,因为我们显然不想对应用服务器造成负面影响。