没有显式appender定义的Logback配置

Joh*_*nny 5 logback

以下 Logback 配置中,其中一个记录器显式定义了它的附加程序,另一个则没有:

<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>
Run Code Online (Sandbox Code Playgroud)

没有显式附加程序规范的记录器将使用什么附加程序(如果有的话)?

gly*_*ing 8

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

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

如果您稍微调整 logback.xml 以添加以下内容:<configuration debug="true">您将看到这种性质的 WARN 事件......

记录器的上下文 [默认] 中没有附加程序 [...]

...当其中的类org.springframework发出错误级别的日志事件时发出。

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

<root level="INFO">
    <appender-ref ref="AMAZING_APPENDER"/>
</root>
Run Code Online (Sandbox Code Playgroud)

如果您添加根并将其指向,AMAZING_APPENDER那么您可能应该设置为“ additive="false"on” logger name="com.company",否则从com.company名称空间记录的任何内容都将被记录两次。因此,也许您想要的配置是:

<root level="INFO">
    <appender-ref ref="STANDARD_APPENDER"/>
</root>
Run Code Online (Sandbox Code Playgroud)