为什么在MDC中设置的代码不在Dropwizard 1.0.6中打印

时间:2017-06-09 13:36:50

标签: java logging logback dropwizard mdc

我在我的应用程序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打印下一行。

1 个答案:

答案 0 :(得分:3)

问题是在控制台日志appender中,没有指定日志格式,因此MDC代码没有打印,它将采用默认日志格式在控制台上打印。

要在控制台上打印MDC代码,请在yml文件中添加以下内容。

- type: console
  threshold: DEBUG
  logFormat: "%-6level [%d{HH:mm:ss.SSS}] %logger %X{test} %msg %n".