我在当前的Tomcat 7中使用JULI日志框架,在我的 WEB-INF / classes 文件夹中提供特定于webapp的 logging.properties 。
现在我正在寻找一种在运行时更改记录器的日志级别的方法。
我发现有几个消息来源说可以通过 MBean Server 在运行时更改记录器的级别。不幸的是,适当的MBean “java.util.logging.Logging”没有列出我的webapp特定记录器,因此我无法执行方法“setLoggerLevel”。
有谁知道如何做到这一点?感谢任何提示 - 不包括那些建议使用log4j的提示,即...; - )
答案 0 :(得分:1)
将JConsole连接到Tomcat并使用MBean选项卡更改记录器级别是理想的方法。一个问题是记录器名称不存在,除非代码触发了记录器的创建。您无法在运行代码之前使用MBean创建记录器。您应该使用JConsole来仔细检查MBean本身是否存在。
Tomcat安装一个custom LogManager,由当前的类加载器进行过滤。 JMX将使用系统类加载器,因此ClassLoaderLogManager won't return the logger names 可能是因为当前的类加载器不是Web应用程序类加载器。
您始终可以使用应用程序get the logger和set the level创建部署的servlet / jsp表单或Web服务。您可能必须在内存中使用pin每个已修改的记录器来保持记录器级别处于活动状态。一旦将级别设置回null,您就可以释放记录器。您必须处理包含此类页面的安全问题。
我不会在生产服务器上执行此操作,但您可以在tomcat中配置指向logging.properties的WatchedResource。然后,只要该文件更新,就会使用新设置重新部署Web应用程序。注意ClassLoader leaks走那条路。