我在一个应用程序中工作,有许多普通的Java组件,每个组件都在一个单独的JVM中运行。所有这些组件都使用Log4j,没有选项可以更改为另一个日志库。
正如标题所暗示的那样,我正在寻找一种“简单”的方法来在所有组件/ JVM上动态应用Log4j日志记录级别。通过“简单”,我的意思是不重写源代码(否则,可以使用,例如,一个接口来获取/设置日志记录级别,并让所有类实现该接口)。
网上有关于使用JMX的文章(例如,通过Log4D发布的LoggerDynamicBean类(http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/jmx/LoggerDynamicMBean.html)。
一篇有趣的文章描述了如何使用应用程序服务器(Tomcat)实现它:http://www.devx.com/Java/Article/32359/1954。应用程序服务器似乎是MBeanServer类的实现所必需的,Log4j将所有记录器都注册为MBean。
是否有任何实现通过JMX或通过任何其他方式跨多个JVM执行此动态日志记录级别设置?
答案 0 :(得分:1)
保持简单。将所有JVM指向同一个log4j配置文件,使用它来偶尔重新加载它们。
PropertyConfigurator.configureAndWatch( yourConfigFile, yourReloadInterval);