简单真,确实的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(),所以你可以用你的对象是多么有用/可读的时候呈现这样简单地限制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top