Logback logger记录两次 [英] Logback logger logging twice

查看:242
本文介绍了Logback logger记录两次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I would like to use slf4j+logback for two purposes in my application - log and audit.

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

For logging, I log the normal way:

static final Logger logger = LoggerFactory.getLogger(Main.class);
logger.debug("-> main()");

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

For Audit, I create a special named logger and log to it:

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

logback configuration:

logback configuration:

<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>

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

Problem: Messages logged through audit logger appear twice - once under the AUDIT_LOGGER and once under the root logger.


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

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

14:41:57.978 | 1 | 10 | welcome to main

14:41:57.978|1|10|welcome to main

14:41:57.978 [主要] INFO AUDIT_LOGGER - 1 | 10 |欢迎来到主

14:41:57.978 [main] INFO AUDIT_LOGGER - 1|10|welcome to main

我该怎么办?确保审计消息在审计记录器下只出现一次?

How can I make sure audit messages appear only once under the audit logger?

推荐答案

更改审计记录器定义,如下所示。注意记录器定义中的 additivity =false标志。

Change audit logger definition as shown below. Note additivity="false" flag in the logger definition.

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

这样可以避免在root logger中再次记录。阅读logback配置文档以获取更多信息。

That will avoid logging this again in root logger. Read logback configuration documentation for more information.

这篇关于Logback logger记录两次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆