将异常记录到localhost.log而不是logback config中指定的文件

时间:2014-06-25 10:37:10

标签: slf4j logback

我在部署到 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>

我做错了什么?

1 个答案:

答案 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)不应该在类路径上以及相应的桥。