以下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,如果有的话?
答案 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>