Skip to content

Instantly share code, notes, and snippets.

@xinyii
Last active June 17, 2024 06:00
Show Gist options
  • Save xinyii/c114d1fc054afe37f81d479c92707b99 to your computer and use it in GitHub Desktop.
Save xinyii/c114d1fc054afe37f81d479c92707b99 to your computer and use it in GitHub Desktop.
[Logback SiftingAppender with Marker] #logback #spring
// Will be written to `log/yyyy-MM-dd/demo.log`
Marker marker = MarkerFactory.getMarker("demo");
log.info(marker, "hello world");
<configuration>
<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<!-- in the absence of the class attribute, it is assumed that the
desired discriminator type is
ch.qos.logback.classic.sift.MDCBasedDiscriminator -->
<discriminator class="com.example.discriminator.MarkerDiscriminator">
</discriminator>
<sift>
<appender name="FILE-${filename}" class="ch.qos.logback.core.FileAppender">
<file>log/${filename}.log</file>
<append>false</append>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d %marker [%thread] %level %mdc %logger{35} - %msg%n</pattern>
</layout>
</appender>
</sift>
</appender>
<root level="DEBUG">
<appender-ref ref="SIFT" />
</root>
</configuration>
public class MarkerDiscriminator extends AbstractDiscriminator<ILoggingEvent> {
@Override
public String getDiscriminatingValue(ILoggingEvent iLoggingEvent) {
final Marker marker = iLoggingEvent.getMarker();
return marker == null ? "spring" : (LocalDate.now().format(DateTimeFormatter.ISO_DATE) + "/" + marker);
}
@Override
public String getKey() {
return "filename";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment