我在部署到 tomcat 8.0.8 的网络应用中 SLF4J 1.7.7 和 logback-classic 1.1.2 Java 8
我的一些日志正确地转到我在logback.xml
中配置的FileAppender,其他的则转到tomcat的localhost.yyyy-MM-dd.log
这种行为在开发过程中非常烦人,在生产环境中是不可接受的。
这是logback.xml
<configuration>
<appender name="fileappender" class="ch.qos.logback.core.FileAppender">
<file>/var/log/tomcat/mywebapp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>mywebapp.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="async" class="reactor.logback.AsyncAppender">
<appender-ref ref="fileappender"/>
</appender>
<root level="info">
<appender-ref ref="async"/>
</root>
</configuration>
我做错了什么?
答案 0 :(得分:0)
Tomcat正在使用Apache的 commons-logging 库进行日志记录。同样适用于各种开源库(例如 spring )。还有其他库使用 log4j 处理日志记录。
如果您想通过slf4j记录所有日志记录输出(在您的情况下是logback),您可能必须使用slf4j网桥( jcl-over-slf4j 和< strong> log4j-over-slf4j 分别用于 commons-logging 和 log4j 。
检查tomcat的localhost.yyyy-MM-dd.log文件中的日志源,找出实际的日志库,并通过放置相关的slf4j桥来检查问题是否得到解决 在类路径上。
请记住,实际的日志记录依赖项(log4j或commons-logging jar)不应该在类路径上以及相应的桥。