没有显式appender定义的Logback配置

时间:2017-08-29 09:10:41

标签: logback

以下Logback配置,其中一个记录器明确定义了它的appender,另一个没有:

<configuration scan="true" scanPeriod="60 seconds">

<appender name="AMAZING_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>XXX</pattern>
    </encoder>
</appender>

<logger name="org.springframework">
    <level value="ERROR" />
</logger>

<logger name="com.company" additivity="false">
    <level value="INFO" />
    <appender-ref ref="AMAZING_APPENDER"/>
</logger>

</configuration>

没有明确的appender规范的记录器会使用什么appender,如果有的话?

1 个答案:

答案 0 :(得分:2)

“没有明确规范的记录器”我认为你指的是:<logger name="org.springframework">

如果是这样,那么该记录器没有可用的appender,org.springframework中的类发出的任何日志事件(无论日志级别如何)都将被忽略。

如果你稍微调整你的logback.xml来添加它:<configuration debug="true">你会看到这种性质的WARN事件......

  

logger [...]

的上下文[默认]中没有appender

...当org.springframework中的某个类以ERROR级别发出日志事件时发出。

如果您想要记录来自org.springframework命名空间(或更一般地,来自com.company以外的任何命名空间)的事件,那么您应该添加<root>配置。例如:

<root level="INFO">
    <appender-ref ref="AMAZING_APPENDER"/>
</root>

如果添加根并将其指向AMAZING_APPENDER,则应该在additive="false"上设置logger name="com.company",否则从com.company命名空间记录的任何内容都将被记录两次。所以,也许你想要的配置是:

<root level="INFO">
    <appender-ref ref="STANDARD_APPENDER"/>
</root>