首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Log4j SyslogAppender是否支持MDC和NDC

Log4j SyslogAppender是否支持MDC和NDC
EN

Stack Overflow用户
提问于 2009-06-02 10:52:33
回答 2查看 3.5K关注 0票数 4

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-03 10:02:08

MDC或NDC都是Syslog协议的一部分。因此,log4j不(也不能)支持Syslog协议的结构化数据中的MDC/NDC。但是,通过将ConversionPattern参数设置为包含MDC信息,您可以将MDC或NDC数据添加到syslog消息的" message“部分。

以下是关键字为"ki“的MDC条目的示例:

代码语言:javascript
复制
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中设置的值没有限制。

票数 7
EN

Stack Overflow用户

发布于 2009-06-02 11:11:14

看看源代码,我看不出有任何理由不应该这样做。

您是否尝试过成功地写入syslog,然后使用NDC/MDC中的内容进行写入?请注意,您必须在PatternLayout中启用此功能(使用%x或%X)。

MDC似乎对您可以插入的内容没有任何限制(同样,基于对源代码的检查)。我怀疑MDC的编写只是简单地对MDC的内容执行一次toString(),因此您可能会受到对象以这种方式呈现时的有用程度/可读性的限制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/938907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档