Log4j SyslogAppender是否支持MDC和NDC

简单来说,Log4j SyslogAppender是否支持MDC和NDC,输出是结构化数据,即使用协议的结构化数据功能?

此外,对于可以放入MDC并成功附加到日志中的内容是否有任何限制?

最佳答案
MDC和NDC是Syslog协议的一部分.因此,log4j不支持(也不能)支持Syslog协议的结构化数据中的MDC / NDC.但是,通过将ConversionPattern参数设置为包含MDC信息,没有什么可以阻止您在syslog消息的“message”部分中添加MDC或NDC数据.

以下是具有键“ki”的MDC条目的示例:

log4j.rootLogger=INFO, SYSLOG
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.SyslogHost=a.host.name

# Facility must be one of the case-insensitive strings:
# KERN, USER, MAIL, DAEMON, AUTH, SYSLOG, LPR, NEWS, UUCP, CRON,
# AUTHPRIV, FTP, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6,
# LOCAL7 
log4j.appender.SYSLOG.facility=KERN

log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern=%r %p %c %X{ki} - %m\n

对于NDC,您可以将“%X {ki}替换为”%x“(请注意使用小写).

至于问题的第二部分,您可以在MDC或NDC中放置的值没有限制.

转载注明原文:Log4j SyslogAppender是否支持MDC和NDC - 代码日志