Search code examples
spring-bootslf4jspring-cloud-sleuth

How to log MDC with Spring Sleuth?


I have a Spring boot + sleuth based application. All works as expected. I have for now logs like this:

2017-05-04 17:55:52.226  INFO [alert,692d0eeca479e216,c3c8b680dc29ad02,false] 17292 --- [cTaskExecutor-1] c.k.a.b.s.alert.impl.AlertServiceImpl    : Alert state to process: xxx

Now, I want to add custom MDC to my log like the contract reference for example. I want to have logs like this:

2017-05-04 17:55:52.226  INFO [alert,692d0eeca479e216,c3c8b680dc29ad02,false] [CONTRACT_REF] 17292 --- [cTaskExecutor-1] c.k.a.b.s.alert.impl.AlertServiceImpl    : Alert state to process: xxx

I tried various things with no success:

  1. Use the Spring Sleuth Tracer to add a tag;
  2. Add logging.pattern.level=%5p %mdc to my application.properties file with MDC.put(xxx, xxx)

How can I add custom MDC/tags to my log?


Solution

  • For versions before 2.x, You have to create your own implementation of a SpanLogger. The easiest way will be to extend the Slf4jSpanLogger and provide your own code to add / update and remove the entries from MDC context. Then you can change your logging pattern and that way your logs will contain what they need.