一尘不染

在运行时更改Tomcat中的日志记录级别?

tomcat

我在当前的Tomcat 7中使用JULI日志记录框架,在我的 WEB-INF / classes* 文件夹中提供了特定于webapp的
logging.properties
*

现在,我正在寻找一种 在运行时 更改记录器的日志级别的方法。

我发现有几个消息来源说,可以通过 MBean Server 在运行时更改记录器的级别。不幸的是,适当的MBean
java.util.logging.Logging”
并未列出我的Webapp特定记录器,因此我无法执行方法 “ setLoggerLevel”

有谁知道如何做到这一点?感谢您的任何提示-不包括那些建议使用log4j的提示,即… ;-)


阅读 268

收藏
2020-06-16

共1个答案

一尘不染

JConsole连接到Tomcat并使用MBean选项卡更改记录器级别是理想的方法。一个问题是,除非代码触发了记录器的创建,否则记录器名称不存在。您不能在代码运行之前使用MBean创建记录器。您应该使用JConsole仔细检查MBean本身是否不存在。

Tomcat安装了一个自定义LogManager,该LogManager可以通过当前类加载器进行过滤。JMX将使用系统类加载器,因此ClassLoaderLogManager
可能不会返回记录器名称,因为当前的类加载器不是Web应用程序类加载器。

您始终可以创建随应用程序一起部署的servlet /
jsp表单或网络服务,以获取记录器设置级别。您可能需要每个修改记录在内存中,让您的记录水平活跃。级别重新设置为空后,您可以释放记录器。您必须通过包含此类页面来处理安全性问题。

我不会在生产服务器上执行此操作,但是您可以在tomcat中配置WatchedResource,该WatchedResource指向您的logging.properties。然后,无论何时更新该文件,都会使用新设置重新部署Web应用程序。注意该路线的ClassLoader泄漏

2020-06-16