We have posted the same in MdcPatternConverter - update output format for log process tool friendly and smaller size * Issue #3435 * apache/logging-log4j2<https://github.com/apache/logging-log4j2/issues/3435>
Background When a log string contains key=value format, in modern log search tool, like Splunk<https://www.splunk.com/> or ELK<https://www.elastic.co/>: * The key will become a searchable field * The value become the value of the corresponding key, and we can do visualization easily The Problem The current output for the MdcPatternConverter<https://github.com/apache/logging-log4j2/blob/2.24.x/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java> is in a similar format to the java.util.Hashtable.toString(), like {key1=value1, key2=value2, key3=value3} If we have the config bellow: * %notEmpty{ %MDC} log4j2 timestamp=%date{ISO8601} log.level=%level{length=5} log.logger=%logger %notEmpty{ %MDC} %highlight{%message%notEmpty{ throwableMessage="%throwable{short.message}"}}%n The MDC part sample output will look like * {TID=8C6976E5B54104, company=TEST-COMPANY-1, companyName=Test Company One, hashUserId=8C6976E5B, ipAddress=127.0.0.1, sessionId=45F0AB50, request=11} Where * "{" and "}" are not useful for the log search tools (Splunk, ELK, or other tools) * "," are in fact not needed The Feature Request We need an option, named like mdcflatformat=true, to indicate MdcPatternConverter<https://github.com/apache/logging-log4j2/blob/2.24.x/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java> will generate a flat format of: * key1=value1 key2=value2 key3=value3 And, then the value contains a space ( ) , the value will be double quoted: * key1=value1 key2=value2 key3=value3 key4="value 4" We will config as * %notEmpty{ %MDC}{mdcflatformat} * Where mdcflatformat is the new flag we introduced The sample output above will become * TID=8C6976E5B54104 company=TEST-COMPANY-1 companyName="Test Company One" hashUserId=8C6976E5B ipAddress=127.0.0.1 sessionId=45F0AB50 request=11 Benefits * The format will be more log search tool friendly * The log generated will be smaller, because we removed the characters of "{", "," and "}" * Small is important, because in a big system, say we have 1 billion transactions per week, every less character in log will save cost Action Items When the community accept this feature request, we can provide PR and test case. Amos A Happy Developer