首页 > 解决方案 > 使用相同的 appender 回溯几个记录器

问题描述

是否有可能让多个记录器使用同一个 appender ?当我创建一个像这样的 logback.xml 时:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%-18.18thread] %highlight(%-5level) %-30.30logger - %msg%n</pattern>
        </encoder>
    </appender>
    <logger name="events.A" level="trace"><appender-ref ref="STDOUT"/></logger>
    <logger name="events.B" level="trace"><appender-ref ref="STDOUT"/></logger>
    <root level="info"/>
</configuration>

但是当我这样做时:

    Logger loggerA = LoggerFactory.getLogger("events.A");
    Logger loggerB = LoggerFactory.getLogger("events.B");
    loggerA.trace("I am A");
    loggerB.trace("I am B");

它只打印“我是 B”。

这是正常的行为吗?有办法吗?我知道我只能使用“事件”记录器,但我会有很多事件,我希望能够分别切换每个事件的日志级别。

标签: javalogginglogback

解决方案


拥有一个带有多个记录器的附加程序不仅是可能的,而且是正常的:事实上,我通常只在<appender-ref ref="xyz"/>标签内放置一个标签,<root>因此它对所有记录器都有效。您的示例运行良好,因此请更好地检查您的真实配置。


推荐阅读