如何在拥有两个 Maven Web 模块的同时正确使用 log4j?

How to properly use log4j while having two maven web modules?

我创建了第一个 Maven Web 模块 (war) 并使用 log4j.properties 配置了 log4j。我将属性文件放在 usr/main/resources 中,它起作用了。然后我添加了另一个 Maven Web 模块并在那里进行了相同的配置,只更改了记录器的文件路径,目的是为每个应用程序提供两个日志文件。我没有收到任何错误,但在网络服务器 (Tomcat) 中部署第二个 war 后它不起作用。现在,即使对于第一个应用程序,日志记录也不起作用。

我什至尝试将 log4j.properties 放在 war 之外,并在 web.xml 中添加 log4jlistener,但在这种情况下,正在创建日志文件,但没有写入任何内容。知道是什么原因造成的吗?我应该采用另一种方法吗?

页面 https://logging.apache.org/log4j/2.0/manual/webapp.html 描述了您应该如何 configure/setup web 应用程序中的 log4j。

https://logging.apache.org/log4j/2.0/manual/logsep.html 中的段落 A​​pproaches 描述了如何将 Web 服务器配置为每个 webapp 具有不同的配置。

您需要在每个应用程序中都有 jar 文件,以免混淆。如果你只有公共库中的jar文件,系统会很混乱。

另一个问题是一些 Maven 工件依赖于损害系统的 jar 文件。您希望在 Web 应用程序的 POM 中拥有用于实现的 jar 文件,但不希望它们位于 Web 应用程序使用的 jar 文件中。 log4j(版本 1.x)日志框架有多个实现 jar 文件。如果您组合来自不同实现的 jar 文件,系统将变得混乱。

https://bradleyaross.wordpress.com/2016/05/05/java-logging-frameworks/

我添加了一些依赖项和排除项以使事情正常进行。