Вопрос

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

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

Это было полезно?

Решение

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.

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top