Log4jのSyslogAppenderはMDCとNDCをサポートしています
-
06-09-2019 - |
質問
シンプル本当に、Log4jのSyslogAppenderが出力、すなわちプロトコルの構造化データの機能を使用して構造化データであることを意味してMDCとNDCをサポートしていますか?
さらに、ログにMDCに入れ、成功裏に追加することができるものに何か制限はありますか。
解決
MDCもNDCは、syslogプロトコルの一部です。したがって、log4jはない(またそれをすることができる)syslogプロトコルの構造化データ内MDC / NDCをサポートします。しかし、何もMDCのinformatationを含めるようにConversionPatternパラメータを設定することにより、Syslogメッセージの「メッセージ」部分に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 "%「だけを持つ%のXを{} KI"(小文字の使用に注意してください)を置き換えることになる。
あなたの質問の後半部分については、あなたはMDCまたはNDCの中に置くことができる値には制限がありません。
他のヒント
ソースコードを見ると、私はいかなる理由が表示されない、なぜそれがいけません。
あなたは成功したsyslogに書き込み、その後、あなたのNDC / MDCで何かを書いてみましたか?あなたはhref="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html" rel="nofollow noreferrer"> PatternLayoutはの(%xまたは%のXを使用して)。
MDCを使用すると、(ソースコードの検査に基づいて、再び)を挿入することができるものを上の任意の制限を持っているように見えていません。私は、MDCの書き込みは、単にMDCの内容にtoString()
を行います疑い、そしてあなたは単にあなたのオブジェクトがこのようにレンダリングされたときにどのように便利/読めるによって制限される場合があります。