Поддерживает ли Log4j SyslogAppender MDC и NDC?

На самом деле все просто, поддерживает ли Log4j SyslogAppender MDC и NDC в том смысле, что выходные данные представляют собой структурированные данные, т.е. используют функции структурированных данных протокола?

Кроме того, есть ли ограничения на то, что можно поместить в MDC и успешно добавить в журнал?

2 ответа

Решение

MDC и NDC являются частью протокола Syslog. Таким образом, log4j не поддерживает (и не может) MDC/NDC в структурированных данных протокола Syslog. Однако ничто не мешает вам добавить данные MDC или NDC в часть "message" сообщения системного журнала, установив параметр 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.

Глядя на исходный код, я не вижу причин, по которым этого не следует делать.

Вы пытались успешно писать в системный журнал, а затем что-то писать в своем NDC/MDC? Обратите внимание, что вам нужно включить это в PatternLayout (используя%x или%X).

Похоже, что MDC не имеет никаких ограничений на то, что вы можете вставить (опять же, на основе проверки исходного кода). Я подозреваю, что запись MDC просто выполнит toString() на содержание MDC, и поэтому вы можете быть ограничены просто тем, насколько полезны / удобочитаемы ваши объекты при рендеринге таким образом.

Другие вопросы по тегам