无法在 Logback 中将 appender 设置为 logger

Posted

技术标签:

【中文标题】无法在 Logback 中将 appender 设置为 logger【英文标题】:Fail to set appender to logger in Logback 【发布时间】:2015-06-14 20:08:07 【问题描述】:

我有一个附加文件,并且想将 org.springframwork 和 ch.qos.logback 指向这个日志文件。但是,当我在 linux 服务器上运行我的应用程序时,这两个包的 INFO 消息不会进入日志文件,而是直接打印出来。 这是我的 logback.xml:

<configuration debug="true">
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
<jmxConfigurator/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>log/myfile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>log/myfile.%i.log.gz</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>10</maxIndex>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>500MB</maxFileSize>
    </triggeringPolicy>
    <encoder>
        <pattern>%dISO8601 %-5p [%t] [%c1] - %m%n</pattern>
    </encoder>
</appender>
<root level="$log.level:-INFO">
    <appender-ref ref="FILE"/>
</root>
<logger name="org.springframework" level="INFO">
    <appender-ref ref="FILE"/>
</logger>
<logger name="ch.qos.logback" level="INFO">
    <appender-ref ref="FILE"/>
</logger>

08:23:22,446 |-CH.qos.logback.classic.joran.JoranConfigurator@1b83cfe9 中的信息 - 将当前配置注册为安全后备点

2015 年 4 月 9 日上午 8:23:22 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息:从类路径资源加载 XML bean 定义 [spring/spring-common.xml]

谁能帮忙指出我的配置有什么问题?谢谢。

顺便说一句:我从 logback 文档中读到我不需要为 logger 设置相同的 appender-ref,否则它将被打印到同一个 appender 中两次。但是我从 logback 调试信息中看到,只有当我为 logger 设置 appender-ref 时,它才会为 logger 设置 appender。

【问题讨论】:

【参考方案1】:

ch.qos.logback 的第一个日志输出无法使用日志配置重定向,因为此输出发生在 Logback 读取其配置时 -> hen / egg 样式问题。

要删除这些消息,请在 XML 中使用 debug="false"

org.springframework 不使用 Logback,除非您为 org.apache.commons.logging(这是 Spring 使用的日志框架)安装桥接器。在http://www.slf4j.org/legacy.html的文档中查找jcl-over-slf4j.jar

【讨论】:

spring框架文档对应部分:docs.spring.io/spring/docs/current/spring-framework-reference/… 谢谢@AaronDigulla,org.springframework 信息现在进入我的日志文件。

以上是关于无法在 Logback 中将 appender 设置为 logger的主要内容,如果未能解决你的问题,请参考以下文章

logback之Appender源码解读

logback:logback和slf4j中的:appenderloggerencoderlayout

Logback 的 Syslog Appender

logback-kafka-appender

logback:两个appender,多个logger,不同级别

Logback日志输出问号的问题解决方案