我在我的应用程序YML文件中的日志设置之下; -
#Logging settings.
logging:
# The default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL.
level: INFO
appenders:
- type: console
- type: file
threshold: DEBUG
logFormat: "%-6level [%d{HH:mm:ss.SSS}] %logger %X{test} %msg %n"
currentLogFilename: app.log
archivedLogFilenamePattern: app-%d{yyyy-MM-dd}-%i.log
archivedFileCount: 7
timeZone: UTC
maxFileSize: 10MB
includeCallerData: true
我检查了使用调试器在MDC映射中设置了test
密钥,我可以显式调用它并在控制台上打印它。但在日志中它不打印。
以下是我的日志声明的o / p: -
INFO [2017-06-08 10:46:29,501] com.abc.Test:log message mdc-test
正如您在日志语句中看到的那样,事务ID不是打印,而是使用MDC.get("test")
上的SOP打印下一行。
答案 0 :(得分:3)
问题是在控制台日志appender中,没有指定日志格式,因此MDC代码没有打印,它将采用默认日志格式在控制台上打印。
要在控制台上打印MDC代码,请在yml文件中添加以下内容。
- type: console
threshold: DEBUG
logFormat: "%-6level [%d{HH:mm:ss.SSS}] %logger %X{test} %msg %n".