Logback logger记录两次
我想在我的应用程序中使用slf4j + logback用于两个目的 – 日志和审计。
对于日志记录,我记录正常方式:
static final Logger logger = LoggerFactory.getLogger(Main.class); logger.debug("-> main()");
对于Audit,我创建了一个特殊的命名记录器并记录到它:
static final Logger logger = LoggerFactory.getLogger("AUDIT_LOGGER"); Object[] params = { new Integer(1) /* TenantID */, new Integer(10) /* UserID */, msg}; logger.info("{}|{}|{}", params);
logback配置:
%d{HH:mm:ss.SSS}|%msg%n %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
问题:通过审计记录器记录的消息出现两次 – 一次在AUDIT_LOGGER下,一次在根记录器下。
14:41:57.975 [main] DEBUG com.gammay.example.Main – – > main()
14:41:57.978 | 1 | 10 |欢迎来到主
14:41:57.978 [主要] INFO AUDIT_LOGGER – 1 | 10 |欢迎来到主页
如何确保审计消息仅在审计记录器下出现一次?
更改审核记录器定义,如下所示。 注意记录器定义中的additivity="false"
标志。
%d{HH:mm:ss.SSS}|%msg%n
这将避免在根记录器中再次记录这一点。 阅读logback配置文档以获取更多信息。