I would like to inject some static labels into my custom logback layout.
What is the proper syntax to define a Map<String, String>
in logback.xml?
Basic logback.xml:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="com.example.CustomEncoder">
<!-- What I've tried -->
<labels>
<key>qwe</key>
<value>asd</value>
</labels>
<pattern>%message %xException{10}</pattern>
</layout>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
CustomEncoder.java:
package com.example;
import ch.qos.logback.classic.PatternLayout;
import ch.qos.logback.classic.spi.ILoggingEvent;
import java.util.Map;
public class Encoder extends PatternLayout {
private Map<String, String> labels;
public void setLabels(Map<String, String> labels) {
this.labels = labels;
}
@Override
public String doLayout(ILoggingEvent event) {
// do something with labels
return super.doLayout(event);
}
}