java - 拥有两个 Maven Web 模块时如何正确使用 log4j?

标签 java maven spring-mvc tomcat log4j

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

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

最佳答案

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

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

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

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

关于java - 拥有两个 Maven Web 模块时如何正确使用 log4j?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37302035/

相关文章:

java - Spring 作为 JNDI 提供者?

java - 如果我们在 dockerfile 中使用 CMD,Docker 多阶段构建会失败

java - 更正应用程序的类路径,使其包含单个兼容版本的 oauth2.client.registration.ClientRegistrations

java - 将字符串值从 Activity 类传递到非 Activity 类

java - 编译失败子包不存在

java - Spring Boot application.properties 未读取

java - Maven 项目采用文件夹结构而不是包的形式

java - Spring MVC + Ajax。如何显示错误?

java - MVC 间接关联

spring - 如何在 Spring 3 中使用 SimpleFormController 和 Validator?