繁体   English   中英

如何在没有 log4j-web.jar 的 web 应用程序中使用 log4j2

[英]How to use log4j2 in the web application WITHOUT log4j-web.jar

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

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

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

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

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

  1. 忽略FAQ的建议1 ,使用LoggerContext.reload重新加载配置。

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

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


然而...

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

问:为什么?

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

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


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM