JBoss EAP:重新加载logback配置而不重启服务器?

时间:2014-04-10 08:00:16

标签: java jboss logback

我们正在使用JBoss企业应用平台服务器,即。 JBOSS EAP 6.1用于我们使用Logback进行日志记录的新Web应用程序。我们现在使用JBoss EAP几个月了,一切都很酷。 此外,您可能知道,您可以在运行期间在JBOSS AS上部署和取消部署应用程序和配置文件(例如mail-service.xml),即无需重新启动服务器。

如果你在临时目录中部署的JBoss EAP上更改了logback.xml配置文件,JBOSS EAP无法识别更改,并且在重新启动服务器时,这个JBOSS EAP服务器删除已更改的文件并重新启动 - 部署完整的新包。这有点烦人 - logaback配置不能热插拔这似乎很奇怪。服务器正在运行。

完成自动重新加载的设置:

- 我们已通过将扫描变量设置为true并将 scanPeriod 设置为5秒来配置回溯。

  

有没有简单的方法可以解决这个问题,即可以进行热插拔' JBOSS EAP 6.1上的logback配置文件?

3 个答案:

答案 0 :(得分:1)

您可以将logback.xml放在配置文件夹中,然后以programmaticaly方式加载其配置。这样,自动重新加载设置应该按预期工作。您可以使用Joran Configurator加载配置。

以下是示例代码段

    LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();

    JoranConfigurator configurator = new JoranConfigurator();
    configurator.setContext(loggerContext);
    loggerContext.reset();
    configurator.doConfigure(LOGBACK_FILE_PATH);

答案 1 :(得分:0)

如果要在磁盘上更新它,请不要使用部署机制进行日志记录配置(从那里将其解压缩到tmp目录中),而是将其存储在应用程序之外的properties / configuration文件夹中。然后指向它引用磁盘中的文件而不是类路径。在此之后,Autoscan应该按预期工作。

如果使用部署机制,所有更新也必须通过部署机制。


更新

  

如果我将我的应用程序中的logback配置保留在   配置文件夹,在这种情况下我们必须加载和初始化   logback配置programatticaly和我认为在那种情况下   默认的logback autoscanner不起作用,因为它总是寻找   webapp的类路径中的logback配置文件。所以,我有   写我的自定义自动扫描仪,我不想这样做。你曾经   在JBOSS EAP中试过这个。 ??

我不明白为什么自动扫描程序无法使用文件路径。甚至the manual entry提供了作为启动参数的logback配置文件的路径,然后指示如何使用scan="true"启用自动扫描,因此它应该可以工作。

我们实际上有一个项目使用启动参数配置了EAP,但它不使用扫描,因为我们不需要它。我们所做的是提供logback文件夹的路径作为启动参数,然后使用logbackconfiglistener(如果它是war,启动bean和JoranConfigurator.doConfigure(),如果它是.ear。

使用web.xml中的logbackconfiglistener时,autoscan不起作用且仅支持classpath的一种情况。 Here's some discussion关于如何规避这一点。

答案 2 :(得分:0)

检查以下链接..一个很好的解决方案,我觉得有效。

http://blog.patouchas.net/technology/logging-with-logback-and-external-configuration/