自定义Logback JSON记录器正在记录额外的日志行

时间:2019-04-12 09:59:11

标签: java logback

我在0.8.8中配置了两个追加器。

logback.xml

大多数日志将使用STDOUT附加程序。但是,某些日志需要使用JSON格式。

对于普通日志,我使用的是Slf4j的<configuration> <appender name="json" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="ch.qos.logback.contrib.json.classic.JsonLayout"> <jsonFormatter class="com.nike.ship.shipmentrepository.logging.ShipRepoJsonFormatter"> <prettyPrint>false</prettyPrint> </jsonFormatter> <timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSS'Z'</timestampFormat> <timestampFormatTimezoneId>UTC</timestampFormatTimezoneId> </layout> </encoder> </appender> <appender name="STDOUT" class="io.symphonia.lambda.logging.DefaultConsoleAppender"> <encoder> <pattern>%d{"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", UTC} %X{AWSRequestId:-" + NO_REQUEST_ID + "} %.-6level %logger{5} - %msg &#xd;%replace(%ex){'\n','&#xd;'}%nopex%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="STDOUT" /> </root> <logger name="jsonLogger" level="INFO"> <appender-ref ref="json"/> </logger> </configuration> ,然后将使用我的STDOUT附加程序。

对于JSON日志,我创建了一个自定义记录器,引用了log.info()中的jsonloggerlogback.xml
然后,我使用此记录器记录带有消息mdc context .. private static final Logger jsonLogger = LoggerFactory.getLogger("jsonLogger");

的结构日志。

这为我提供了预期的JSON格式的日志,但它还会按照我的STDOUT附加程序中指定的模式记录一条额外的行。

jsonLogger.info(message);

当我为当前记录器使用JSON附加程序时,为什么它以STDOUT附加程序的格式记录最后一个额外的日志行?

0 个答案:

没有答案