MDC и NDC являются частью протокола Syslog. Таким образом, log4j не поддерживает (и не может) поддерживать MDC/NDC в структурированных данных протокола Syslog. Однако ничто не мешает вам добавить данные MDC или NDC в часть «сообщение» сообщения системного журнала, установив параметр ConversionPattern для включения информации MDC.
Вот пример записи MDC с ключом «ki»:
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.
person
Ceki
schedule
03.06.2009