【问题标题】:How to use log4j2 in the web application WITHOUT log4j-web.jar如何在没有 log4j-web.jar 的 Web 应用程序中使用 log4j2
【发布时间】:2021-12-27 21:09:41
【问题描述】:

我想把 log4j2 (v2.17.0) 的配置文件放在war文件之外。因此,我可以在不重新部署 war 文件的情况下更改日志记录配置。 log4j2-web.jar 提供了在 war 文件之外配置配置文件以及其他功能的机制。

不幸的是,我不允许在 Web 应用程序中使用 log4j-web.jar 文件。 根据log4j2FAQ,不建议使用LoggerContext加载配置文件,因为它不是公共API的一部分。

问题: 在没有 log4j-web.jar 文件的 Web 应用程序中是否有任何有效的方法可以使用 log4j2?

【问题讨论】:

    标签: java logging log4j log4j2


    【解决方案1】:

    问:在没有log4j-web.jar文件的web应用中,有没有什么有效的方法可以使用log4j2?

    有两种可能的方法可以在不使用 log4j2-web.jar 的情况下动态更新日志记录配置。

    1. 忽略常见问题的建议1并使用LoggerContext.reload重新加载配置。

      Log4j2 团队可能会在未来的版本中更改某些内容,从而使这种方法不再有效。但这不太可能(IMO)......如果/当它发生时,你可以处理这个问题。

    2. 使用 Log4j2 的automatic reconfiguration 机制。基本上,您告诉 Log4j2 定期检查配置文件以查看它是否已更改。


    然而……

    如果我是你,我想了解为什么你“不允许”使用“log4j-web.jar”。是出于安全原因吗?如果是这样,您可能需要与安全人员交谈,以便您完全了解安全原因。

    问:为什么?

    答:因为您似乎想要复制“log4j-web.jar”的某些功能。您尝试复制的功能可能是您的安全团队担心的根源。如果是这种情况,那么从安全角度来看,手动实现功能(即不使用“log4j-web.jar”)可能会更糟!

    所以...找出答案!这不是“请求宽恕而不是许可”是一种合理策略的情况。


    1 - 实际上,我不认为这是“推荐”。相反,我将其解读为“对潜在后果的警告”。如果他们真的认为使用LoggerContext.reload 这是一个坏主意,我想他们会使用更明确的语言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2014-02-17
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多