Log4j2 + Glassfish + NetBeans:如何在编辑和保存log4j2.xml时(在部署时)使自动重新配置工作

时间:2016-02-15 08:55:09

标签: logging glassfish log4j log4j2

编辑:报告为:https://issues.apache.org/jira/browse/LOG4J2-1586

volcano.df = as.data.frame(volcano)

volcano.list <- list(x = 1:nrow(volcano),
                     y = 1:ncol(volcano),
                     z = volcano)

is.list(volcano.df)  # TRUE
is.list(volcano.list)  #TRUE !!

在项目的构建文件夹(而不是单独部署的WAR)上部署NetBeans Web应用程序。

来自https://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticReconfiguration

  

从文件配置时,Log4j可以自动执行   检测配置文件的更改并重新配置自身。如果   在配置中指定了monitorInterval属性   如果将element设置为非零值,则将检查该文件   下次评估和/或记录日志事件时   自上次检查后已经过了monitorInterval。以下示例   显示如何配置属性以使配置文件   只有在至少30秒后才会检查更改   过去。最小间隔为5秒。

Log4j2: v2.5
Glassfish: v4.1
NetBeans IDE: 8.1beta

但是当我编辑并保存/build/web/WEB-INF/classes/log4j2.xml没有任何反应时,自动重新配置魔法失败。否则找到了log4j2.xml,似乎工作正常。

1 个答案:

答案 0 :(得分:0)

回答自己:这回答了最初的问题:

如何在编辑和保存log4j2.xml时(在从NetBeans部署到Glassfish时)自动重新配置工作

但这只是一种解决方法,因为它无法解释为什么记录的技术<Configuration monitorInterval="5">不起作用,因此仍然欢迎其他答案。

在项目Run VM args:

中使用此系统参数时没有问题
-Dlog4j.configurationFile=/Users/.../webapp/build/web/WEB-IN‌​F/classes/log4j2.xml‌​

然后我可以清楚地看到文件更改被捕获并且在glassfish日志中发生了重新配置:

Info:   2016-09-16 10:47:24,669 Log4j2-Log4j2Scheduled-2 INFO File  /Users/.../webapp/build/web/WEB-IN‌​F/classes/log4j2.xml‌​ was modified
Info:   2016-09-16 10:47:24,670 Log4j2-1 DEBUG Reconfiguration started for context  
....

然后捕获通过编辑该文件对日志级别所做的更改。