我的maven项目导致在Tomcat上部署了WAR文件
我已将依赖项包含在slf4j-log4j中,就像我的pom.xml
中那样<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
log4j.properties文件看起来像那样(我确保它实际上部署在war文件中并最终在WEB-INF / classes中):
log4j.rootLogger = DEBUG, MyFile
# Define the file appender
log4j.appender.MyFile=org.apache.log4j.FileAppender
log4j.appender.MyFile.File=${catalina.base}/logs/MyFile.log
log4j.appender.MyFile.ImmediateFlush=true
log4j.appender.MyFile.Threshold=DEBUG
log4j.appender.MyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.MyFile.layout.ConversionPattern=%-5p [%t]: %m%n
以下代码应该在名为MyFile.log的tomcat日志文件夹中生成一个日志文件,该文件夹还包含我的日志输出...但它没有。甚至没有创建该文件。
EDIT2:相反我发现日志条目正在写入STDOUT而不是FileAppender的日志文件......
EDIT3:我测试了两个不同的Tomcats(一个在Suse Linux上,另一个在Windows上作为服务)。结果基本相同
private Logger logger = LoggerFactory.getLogger(MyClass.class);
...
logger.info("User {} not found", cn);
编辑:
我做错了什么?
答案 0 :(得分:1)
尝试将文件路径更改为log4j.appender.MyFile.File=logs/MyFile.log
。由于Tomcat安装目录是应用程序的当前目录,因此它必须在没有参数${catalina.base}
的情况下工作,这可能在您的应用程序的上下文中不存在。
答案 1 :(得分:0)
我设法使用以下log4j.xml而不是log4j.properties来解决问题。我不确定为什么......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="MyFile" class="org.apache.log4j.FileAppender">
<param name="file" value="${catalina.base}/logs/MyFile.log"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss.SSS} [%t] %-5p %c{1}:%M - %m%n"/>
</layout>
</appender>
<root>
<priority value="info"/>
<appender-ref ref="MyFile"/>
</root>
</log4j:configuration>