Я пытаюсь зарегистрировать журналы Java в Syslog в формате JSON, но я обнаружил странную проблему, когда заголовок Syslog не настроен так, как ожидалось.loglog logstash encoder Заголовок журнала Syslog не установлен
Я проверяю это на Mac и с помощью Wireshark, чтобы захватить пакеты, как они получают, посылаемые в порт UDP 514 (через интерфейс обратной связи)
Мой logback.xml выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<conversionRule conversionWord="syslogStart" converterClass="ch.qos.logback.classic.pattern.SyslogStartConverter"/>
<appender name="stash" class="net.logstash.logback.appender.LogstashSocketAppender">
<host>localhost</host>
<port>514</port>
<prefix class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%syslogStart{LOCAL5}</pattern>
</layout>
</prefix>
</appender>
<root level="INFO">
<appender-ref ref="stash"/>
</root>
</configuration>
и когда я смотрю на выходе Wireshark я вижу только JSON не будучи зарегистрированным (не PRI поле заголовка заданного)
[truncated]Syslog message: (unknown): {"@timestamp":"2016-03-22T12:13:37.270+11:00","@version":1,"message":"Started App in 4.327 seconds (JVM running for 4.92)","logger_name":"au.com.xxx.App","threa
Если переключиться на стандартный Logback Syslog Appender (не в формате JSON выход)
...
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>127.0.0.1</syslogHost>
<Facility>LOCAL5</Facility>
<SuffixPattern>%-5level MyApp %logger %msg</SuffixPattern>
</appender>
...
я увидеть правильный объект заголовка необработанного значения < 174> и проанализирован значение LOCAL5.INFO в WIRESHARK пакетах
Syslog message: LOCAL5.INFO: Mar 22 12:31:03 sbmelmac-06390.local INFO App au.com.App Started App in 11.292 seconds (JVM running for 29.336)
требуется заголовок системного журнала (в конфе системного журнала), чтобы направьте сообщения журнала на правильные файлы, поэтому без этого я не могу отфильтровать записи журнала на основе фильтров объектов.
Я использую SpringBoot (1.2.7), (который использует Logback 1.1.3), Apache Camel (2.16.1) и logstash-Logback-кодер (4,6)
Когда я бегу в отладить похоже, что метод SyslogStartConverter.convert никогда не вызывается.
Приветствия Рой