是否Log4j的SyslogAppender支持MDC和NDC
-
06-09-2019 - |
题
简单真,确实的Log4j SyslogAppender支持MDC和NDC在这个意义上的输出被结构化的数据,即使用的协议的结构化数据的功能?
此外,是否有什么可放在MDC,并成功地追加到日志任何限制?
解决方案
MDC也不NDC是日志协议的一部分。因此,log4j的不(也可以它)的日志协议的结构化数据中的支持MDC / NDC。然而,没有什么能够阻止从通过设置ConversionPattern参数包括MDC informatation在系统日志消息的“消息”部分添加MDC或NDC数据。
下面是用于与键“き”的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 {き}只有 “%X”(注意,使用下壳体)。
至于你的问题的第二部分中,有将这些值没有限制可以MDC或NDC内发生。
其他提示
查看源代码,我看不出有任何理由为什么它不应该。
您是否尝试过成功写入系统日志,然后在你的NDC / MDC什么写什么呢?请注意,您必须在的PatternLayout启用此(使用%x或%X)。
在MDC似乎并没有对你可以插入什么任何限制(再次,根据检查源代码)。我怀疑MDC写作只会MDC上的内容进行toString()
,所以你可以用你的对象是多么有用/可读的时候呈现这样简单地限制。
不隶属于 StackOverflow