Java JBoss EAP:在不重新启动服务器的情况下重新加载logback配置?

Java JBoss EAP:在不重新启动服务器的情况下重新加载logback配置?,java,jboss,logback,Java,Jboss,Logback,我们正在使用JBoss企业应用程序平台服务器,即JBoss EAP 6.1,用于我们新的使用Logback进行日志记录的web应用程序。我们使用JBoss EAP已有几个月了,一切都很好。 另外,正如您所知,您可以在运行时在JBOSS上部署和取消部署应用程序和配置文件(例如,mail service.xml),也就是说,无需重新启动服务器 但是如果在临时目录中部署的JBoss EAP上更改logback.xml配置文件,则JBoss EAP无法识别更改,重新启动服务器时,此JBoss EAP服务

我们正在使用JBoss企业应用程序平台服务器,即JBoss EAP 6.1,用于我们新的使用Logback进行日志记录的web应用程序。我们使用JBoss EAP已有几个月了,一切都很好。 另外,正如您所知,您可以在运行时在JBOSS上部署和取消部署应用程序和配置文件(例如,mail service.xml),也就是说,无需重新启动服务器

但是如果在临时目录中部署的JBoss EAP上更改logback.xml配置文件,则JBoss EAP无法识别更改,重新启动服务器时,此JBoss EAP服务器将删除更改的文件并重新部署完整的新包。这有点烦人——奇怪的是,当服务器运行时,logaback配置不能“热插拔”

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

——我们已通过将扫描变量设置为true,将扫描周期设置为5秒来配置回显

有没有简单的方法来解决这个问题,即在JBOSS EAP 6.1上“热插拔”logback配置文件?


如果你想在磁盘上更新它,不要对你的logback配置使用部署机制(从那里它将被解包到你的tmp目录),而是将它存储在你的应用程序之外的properties/configuration文件夹中。然后指向它引用磁盘中的文件,而不是类路径。此后,Autoscan应能正常工作

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


更新:


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

我不明白为什么autoscanner不能处理文件路径。甚至还提供了logback配置文件的路径作为启动参数,然后指示如何使用
scan=“true”
启用自动扫描,因此它应该可以工作

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


autoscan无法工作且仅支持类路径的一种情况是使用web.xml中的logbackconfiglistener。您可以将logback.xml放在配置文件夹中,然后加载其配置程序。这样,自动重新加载设置应按预期工作。您可以使用配置器加载配置

下面是一个示例代码片段

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

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

检查下面的链接。。我认为这是一个很好的解决办法


您不能通过CLI更改配置吗?感谢Sarvesh的回答,但您告诉我的是LogBack也在内部执行的操作,唯一的区别是它使用轮询机制在每个扫描间隔后检查更改,但现在没有发生这种情况。如果我必须以编程方式加载它,那么这个程序需要一个触发点。Nikhil,我在某个地方遇到了类似的问题,logback.xml被放入war中,autoscan属性不起作用,然后我不得不将其置于war之外,并单独加载其配置。在应用程序初始化时加载logback上下文是一件非常重要的事情,它不需要任何触发器或轮询,它将在指定的时间段后重新加载上下文。如果我将logback配置保留在我的应用程序之外的configuration文件夹中,在这种情况下,我们必须加载并初始化logback配置程序Atticali,我认为在这种情况下,默认的logback autoscanner将无法工作,因为它总是在webapp的类路径中查找logback配置文件。所以在这里,我必须编写我的自定义自动扫描程序,这是我不想做的。你曾经在JBOSS EAP中尝试过这个吗@尼克回答了我的回答