我们正在为使用 Apache log4j 进行日志记录的新 Web 应用程序使用 JBoss 应用程序服务器。我们使用 JBoss 已有几个月了,一切都运行良好,集中配置功能非常好用。
此外,您可能知道,您可以在运行时部署和取消部署应用程序和配置文件(例如 mail-service.xml),即无需重新启动服务器。
如果你改变jboss-log4j.xml但是,如果您更改了配置文件,除非您重新启动它,否则 JBoss 将无法识别更改。这有点烦人 - 奇怪的是,log4j 配置是唯一一个在服务器运行时无法“热交换”的配置。
有没有简单的方法可以解决这个问题,例如可以“热交换”log4j 配置文件吗?
我听说过一个涉及某个 servlet 的解决方案,我想它会重新加载新的 jboss-log4j.xml 文件。有人做过这个吗?能给点提示/说明吗?或者可以给我们一个可以查找的地方吗?
设置: 如果这很重要的话,我们在 Ubuntu 10.04 机器上使用带有最新 log4j .jar 的 JBoss EAP 5.0。
答案1
看起来 JBoss 确实会自动重新加载 log4j 配置。但与其他可热插拔文件(如部署或其他服务器配置)相反,它不是立即发生的,而是以 60 秒为间隔发生的。
我想我只是太快并且太急躁而没有注意到这一点。
以下是有关此事的更多信息:
http://blog.techstacks.com/2009/03/dynamically-updating-log-levels-in-jboss.html
答案2
我们通过 Java 在应用程序级别上执行此操作,http://logging.apache.org/log4j/1.2/faq.html#a3.6