2016-07-08 5 views
0

При использовании JBoss 5.1 с этим Appender:Как настроить формат сообщений в системный журнал в WildFly

<appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender"> 
    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> 
    <param name="Facility" value="LOCAL7"/> 
    <param name="FacilityPrinting" value="true"/> 
    <param name="SyslogHost" value="localhost"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="[%d{ABSOLUTE},%c{1}] %m%n"/> 
    </layout> 
</appender> 

я вижу следующее сообщение для записи журнала (в EventLog Analyzer):

local7:[13:32:45,763,SendingPool] Sending pool task executed. Pool size is [0 

В WildFly 8.2 0,1 у меня есть следующая конфигурация для обработчика:

<syslog-handler name="SYSLOG"> 
     <level name="DEBUG"/> 
     <server-address value="localhost"/> 
     <facility value="local-use-7"/> 
    </syslog-handler> 

Сообщение:

1 2016-07-08T13:30:34.943+03:00 - java 910 com.mycompany.component.p - Sending pool task executed. Pool size is [0 

Как я могу изменить формат сообщения для syslog?

ответ

1

К сожалению, для форматирования сообщения используется syslog-handler. Это был недосмотр, когда он был создан, и существует долгое время JIRA, чтобы исправить это.

Однако вы можете использовать custom-handler и использовать форматтер.

/subsystem=logging/pattern-formatter=syslog-formatter:add(pattern="local7: [%d{hh:mm:ss,SSS},%c{1}] %s") 
/subsystem=logging/custom-handler=syslog:add(class=org.jboss.logmanager.handlers.SyslogHandler, module=org.jboss.logmanager, named-formatter=syslog-formatter, properties={hostname="localhost", facility="LOCAL_USE_7", protocol="TCP", useCountingFraming=true}) 
/subsystem=logging/root-logger=ROOT:add-handler(name=syslog) 

Примечание, если вы хотите, чтобы local7: для печати, которая должна быть частью формата. Невозможно добавить имя сообщения в сообщение.

Глядя на:

1 2016-07-08T13:30:34.943+03:00 - java 910 com.mycompany.component.p - Sending pool task executed. Pool size is [0 

Это выглядит как сырое сообщение минус приоритет. По умолчанию обработчик syslog будет использовать формат RFC 5424. Если вы хотите использовать RFC 3164, добавьте syslogType=RFC3163 в атрибут properties в вышеупомянутой операции добавления пользовательского обработчика и удалите useCountingFraming=true. Обратите внимание, что useCountingFraming=true может потребоваться удалить в любом случае. Это зависит от настройки вашего сервера syslog.

+0

С этими настройками WildFly зависает при запуске в течение нескольких минут и не регистрируется на сервере, я пробовал с использованием и с использованием функцииCountingFraming. – Rustam

+0

Установлен ли ваш сервер syslog для использования UDP или TCP? Я думал, что log4j дефолт TCP, поэтому я предположил, что это то, что нужно использовать, но я мог ошибаться. –

+0

TCP, сервер по умолчанию 514 порт – Rustam