相关疑难解决方法(0)

Logback 记录器记录两次

我想在我的应用程序中将 slf4j+logback 用于两个目的 - 日志和审计。

对于日志记录,我以正常方式记录:

static final Logger logger = LoggerFactory.getLogger(Main.class);
logger.debug("-> main()");
Run Code Online (Sandbox Code Playgroud)

对于审计,我创建了一个特殊的命名记录器并登录到它:

static final Logger logger = LoggerFactory.getLogger("AUDIT_LOGGER");
Object[] params =
    { new Integer(1) /* TenantID */, new Integer(10) /* UserID */, msg};
logger.info("{}|{}|{}", params);
Run Code Online (Sandbox Code Playgroud)

登录配置:

<logger name="AUDIT_LOGGER" level="info">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS}|%msg%n
            </pattern>
        </encoder>
    </appender>
</logger>

<root level="all">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>
</root>
Run Code Online (Sandbox Code Playgroud)

问题:通过审计记录器记录的消息出现两次 - 一次在 AUDIT_LOGGER 下,一次在根记录器下。

14:41:57.975 [main] 调试 com.gammay.example.Main - -> main()

14:41:57.978|1|10|欢迎来到主 …

java logback slf4j

6
推荐指数
2
解决办法
4907
查看次数

标签 统计

java ×1

logback ×1

slf4j ×1