Logback: using different patterns for different markers

The software I'm working on uses MDC for specific data (username, ip, runtime, etc.). I want some magazines to use a specific template using some MDCs, and some magazines to use a different template using different MDCs.

I thought that tokens would do the job, and I created different tokens, say: PROFILE_MARKER - used for profile logs AUDIT_MARKER - used for audit logs

I have 3 appenders in my logback.xml configuration file, one for both of my tokens, and one for all other logs:

<configuration> <appender name="profiler" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d [%t] [%X{USER}] [PROFILER] %-5p %m %X{TIME} ms %n</pattern> </encoder> <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator"> <marker>PROFILER</marker> </evaluator> <onMismatch>DENY</onMismatch> <onMatch>ACCEPT</onMatch> </filter> </appender> <appender name="audit" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d [%t] [%X{USER}] [AUDIT] %-5p IP=%X{IP},ID=%X{ID} %m %n</pattern> </encoder> <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator"> <marker>AUDIT</marker> </evaluator> <onMismatch>DENY</onMismatch> <onMatch>ACCEPT</onMatch> </filter> </appender> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d [%t] [%X{USER}] %-5p %c - %m %n</pattern> </encoder> <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator"> <marker>AUDIT</marker> <marker>PROFILE</marker> </evaluator> <onMismatch>ACCEPT</onMismatch> <onMatch>DENY</onMatch> </filter> </appender> <root level="INFO"> <appender-ref ref="audit" /> <appender-ref ref="profiler" /> <appender-ref ref="stdout" /> </root> 

I have the feeling that I am doing it wrong and that I should use only one appender and maybe use filters in different ways. However, I cannot figure out how to do this. Maybe markers are not a solution here?

Any help would be greatly appreciated.

+8
slf4j logback mdc
source share

No one has answered this question yet.

See related questions:

231
Why not use java.util.logging?
115
Marker Recommendations in SLF4J / Logback
98
How to use MDC with thread pools?
10
How to make a journal journal an empty string, not including a template string?
3
Login-custom in layout
2
Multiple Grails + tomcat-slf4j-logback applications, how to get the application name in the log file
one
Creating an Audit Log Audit Logger
one
Logback MDC - Incorrect value in SuccessHandler
one
How to transfer log file name through MDC recovery function
0
Many markers in the layout

All Articles