我正在为运行在Tomcat 8上的Web应用程序升级log4j的版本。我正在从1.2.12版本升级到最新的2.11.1。
该应用程序正在使用Maven。因此,我在应用程序pom.xml
中添加了以下依赖关系(版本在父pom中进行管理):
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
我删除了旧的配置文件log4j.properties
,并用文件夹log4j2.xml
中的新src/main/resources
文件替换了(在我的log4j2文件内容下面找到)。
当我直接运行main
函数时,日志已正确写入控制台和文件中。但是,当我在Tomcat上部署应用程序并运行该应用程序时,不会写入任何日志。
我检查了我的应用程序WAR,两个库都位于WEB-INF/lib
文件夹中。
我还通过将log4j-1 **中的排除项添加到对它有依赖性的外部库中进行了测试,但是没有任何变化...
有人已经遇到了同样的问题吗,您如何解决呢?
关于, 马修(Matthieu)
PS:我的log4j2.xml文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status=WARN strict="true">
<Properties>
<Property name="pattern">%d [%t] (%F:%L) %x %-5p [%c{1}] %m%n</Property>
<Property name="filePath">C:/temp/logs/my_app/my_app.log</Property>
</Properties>
<Appenders>
<Appender type="Console" name="STDOUT">
<Layout type="PatternLayout" pattern="${pattern}"/>
</Appender>
<Appender type="RollingFile" name="FILE" fileName="${filePath}" filePattern="${filePath}.%i">
<Layout type="PatternLayout" pattern="${pattern}"/>
<Policies>
<SizeBasedTriggeringPolicy size="500KB"/>
</Policies>
<DefaultRolloverStrategy max="1"/>
</Appender>
</Appenders>
<Loggers>
<Logger name="my.package.debug" level="DEBUG" additivity="false">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="FILE"/>
</Logger>
<Root level="WARN">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="FILE"/>
</Root>
</Loggers>
</Configuration>
答案 0 :(得分:0)
我终于找到了我的问题,这是由于另一个库(infinispan嵌入)正在重新定义Log4j类,例如LogManager。我正在加载这些类,而不是在log4j库中加载那些类,并且它们的版本比我想要的版本还要旧。
我刚刚替换了库,并且日志已正确写入文件中。