2015-05-08 5 views
1

У меня есть приложение, которое использует log4j 1.2.17 с MDC. Мне удается настроить удаленную регистрацию с помощью org.apache.log4j.net.SocketAppender, которая использует протокол TCP:log4j 1.2.17 + MDC + UDP

<appender name="EXTLOG" class="org.apache.log4j.net.SocketAppender"> 
    <param name="RemoteHost" value="host" /> 
    <param name="ReconnectionDelay" value="60000" /> 
    <param name="Threshold" value="TRACE" /> 
</appender> 

Теперь я хочу, чтобы переключиться на UDP протокол. Я переключился на org.apache.log4j.net.SyslogAppender, но SyslogAppender не поддерживает MDC (структурированным способом). Я знаю, что MDC имеет гораздо большую поддержку в log4j2, есть ли способ открыть ведение журнала с помощью MDC с использованием UDP в log4j 1.2. *?

ответ

0

Я не нашел решение этой проблемы на уровне log4j. Кажется, что log4j2 имеет лучшую поддержку описанных функций, но его синтаксис несовместим с log4j. Итак, я решил перенести мой журнал на Logback. Я использовал «net.logstash.logback.appender.LogstashSocketAppender». Это приложение UDP и полностью поддерживает MDC (вам просто нужно настроить парсер JSON на Logstash).

0

Посмотрите здесь: logstash-gelf. Эта библиотека может передавать ваши события журнала по различным транспортным средствам (TCP, UDP и Redis), используя спецификацию GELF, которая доступна в logstash. Это может использоваться с log4j, log4j2, Logback, java.util.logging и JBossAS 7/Wildfly 8.

Вы имеете полный MDC поддержку и вы сможете настроить MDC особенности, так что вы можете контролировать то, что вы получаете:

<appender name="gelf" class="biz.paluch.logging.gelf.log4j.GelfLogAppender"> 
    <param name="Host" value="udp:localhost" /> 
    ... 

    <!-- This are static fields --> 
    <param name="AdditionalFields" value="fieldName1=fieldValue1,fieldName2=fieldValue2" /> 

    <!-- This are fields using MDC --> 
    <param name="MdcFields" value="mdcField1,mdcField2" /> 
    <param name="DynamicMdcFields" value="mdc.*,(mdc|MDC)fields" /> 
    <param name="IncludeFullMdc" value="true" /> 
</appender> 
Смежные вопросы