Log4j SyslogAppender是否支持MDC和NDC

Sim*_*bbs 4 log4j syslog ndc structured-data mdc

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

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

Cek*_*eki 7

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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 任何人都会认为这个人写过log4j或其他东西 (7认同)
  • Gareth Davis:事实上他做到了. (2认同)