How to conditionally add text from MDC on a LOG4J pattern?
log4j
Solution
I endend up using xav's suggestion.
I removed the "client=" string from the log4j pattern and appended it everytime I added an entry to MDC. It's not the most beautiful solution but it worked great!
For example, where I otherwise would use
MDC.put("client", client.getId());
I am now using:
MDC.put("client", "client="+client.getId().toString());
Problem
How do I print a key/value pair on a log4j entry only if the value is set on MDC? For example, I currently have the following pattern: ``` %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - client=%X{client} %m%n ``` I'd like to print the "client=" part only if there is a value on MDC for this key. For example, when starting my program, there will be no client logged in, so logs would be recorded using this pattern: ``` %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n ``` However, after the client has logged in (and after I have set the MDC with a "client" key), I need to print it using the following: ``` %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - client=%X{client} %m%n ``` Is there such "conditional pattern" on log4j? Thank you