Spring Boot:每个日志语句中的LOGBack自定义字段

时间:2016-04-26 22:37:49

标签: spring spring-boot logback

在我努力寻找这些信息的过程中分享以下工作的想法:

要求是在每个日志语句中放置业务关联ID(AccCode和Mac)。这可以通过使用Mapped Diagnostic Context(MDC).来完成。

无需了解LOGBack appender-> Encoder-> Layout如何工作。

Spring boot log4j.properties具有以下模式:

LOG_LEVEL_PATTERN=%5p
LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss.SSS}] boot%X{context} - ${PID} ${LOG_LEVEL_PATTERN} [%t] --- %c{1}: %m%n

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=${LOG_PATTERN}

使用自定义字段覆盖application.properties中的LOG_LEVEL_PATTERN:

logging.pattern.level=AccCode:%X{AccCode} Mac:%X{Mac} %5p

请注意,现在我们在布局中定义了两个额外的字段。 AccCode和Mac。需要使用MDC提供这些新字段的值:

 MDC.put("AccCode", "46014" ); 
 MDC.put("Mac", "2025b9bcf"); 

然后所有日志语句都有AccCode和Mac,如下所示:

2016-09-12 09:11:37.574 **AccCode:46014** **Mac:2025b9bcf** DEBUG 9724 --- [main] c.c.p.sph.http.client.SphApAdminClient   : Loging out from Sph 

0 个答案:

没有答案