Do you know that hours of trial and error can save you minutes of reading documentation? Well, that was not the case today because I wasn’t able to find that (although it is).
The Internet is full of (crappy) pages explaining how to change log format replacing the original files (logback-spring.xml, …) but we didn’t want to change and write ALL the configuration. We just wanted to add a field to the log.
You can find that param on the official documentation, but it is easily missed.
logging.pattern.level: <your marvelous pattern>
Do you know how I found that? I had to browse Sleuth code to know how they change it.
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
Map<String, Object> map = new HashMap<String, Object>();
// This doesn't work with all logging systems but it's a useful default so you see
// traces in logs without having to configure it.
if (Boolean.parseBoolean(environment.getProperty("spring.sleuth.enabled", "true"))) {
map.put("logging.pattern.level",
"%5p [${spring.zipkin.service.name:" + "${spring.application.name:}},%X{traceId:-},%X{spanId:-}]");
}
addOrReplace(environment.getPropertySources(), map);
}
So easy once you know it.
Ours now is:
"%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-},%X{user_id}]"
user_id is a variable set in the MDC on every request.

