我创建了第一个maven web模块(war)并使用log4j.properties配置了log4j。我将属性文件放在usr / main / resources中并且它工作正常。然后我添加了另一个maven web模块并在那里进行了相同的配置,只更改了记录器的文件路径,目的是为每个应用程序提供两个日志文件。我没有收到任何错误但是在我在webserver(Tomcat)中部署第二次战争后它没有用。现在,即使第一个应用程序,日志记录也不起作用
我甚至尝试将log4j.properties放在战争之外并在web.xml中添加log4jlistener,但在这种情况下,正在创建日志文件,但没有写入任何内容。知道是什么原因引起的吗?我应该遵循另一种方法吗?
答案 0 :(得分:1)
您需要在每个应用程序中都有jar文件,以免它们混淆。如果你只是在公共库中有jar文件,那么系统会非常困惑。
另一个问题是某些Maven工件依赖于损坏系统的jar文件。您希望为Web应用程序的POM中的实现提供jar文件,但是您不希望它们位于Web应用程序使用的jar文件中。 log4j(版本1.x)日志框架有多个实现jar文件。如果组合来自不同实现的jar文件,系统将会混淆。
请参阅https://bradleyaross.wordpress.com/2016/05/05/java-logging-frameworks/
我添加了一些依赖项和排除项,以使工作正常。
答案 1 :(得分:0)
页面https://logging.apache.org/log4j/2.0/manual/webapp.html描述了如何在Web应用程序中配置/设置log4j。
https://logging.apache.org/log4j/2.0/manual/logsep.html中的段落 Approaches 描述了如何配置Web服务器以使每个webapp具有不同的配置。