【发布时间】:2014-08-02 13:32:25
【问题描述】:
我想在我的应用程序中将 slf4j+logback 用于两个目的 - 日志和审计。
对于日志记录,我以正常方式记录:
static final Logger logger = LoggerFactory.getLogger(Main.class);
logger.debug("-> main()");
为了审计,我创建了一个特殊的命名记录器并记录到它:
static final Logger logger = LoggerFactory.getLogger("AUDIT_LOGGER");
Object[] params =
{ new Integer(1) /* TenantID */, new Integer(10) /* UserID */, msg};
logger.info("{}|{}|{}", params);
logback 配置:
<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 下,一次在根记录器下。
14:41:57.975 [main] 调试 com.gammay.example.Main - -> main()
14:41:57.978|1|10|欢迎来到主站
14:41:57.978 [main] INFO AUDIT_LOGGER - 1|10|欢迎来到 main
如何确保审核消息在审核记录器下只出现一次?
【问题讨论】:
-
关闭审计记录器的可加性。
-
@RaviH 对不起,你能解释一下吗?您的意思是删除审计记录器的附加程序吗?