我試圖以JSON格式將Syslog日誌記錄到Syslog,但是我發現Syslog標頭未按預期設置的奇怪問題。logback logstash編碼器系統日誌標頭未設置
我在Mac上測試這一點,並使用Wireshark來抓取
我logback.xml如下,因爲他們獲取發送到UDP端口514(通過loopback接口)數據包:
<?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輸出I只看到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系統日誌附加器(非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>並解析值是必需的系統日誌頭中的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)
LOCAL5.INFO(在syslog CONF)到將日誌消息路由到正確的文件,所以沒有這個我不能過濾出基於設施過濾器的日誌條目。
我使用SpringBoot(1.2.7),(使用的logback 1.1.3),apache的駱駝(2.16.1)和logstash-的logback編碼器(4.6)
當我在調試運行它看起來像SyslogStartConverter.convert方法永遠不會被調用。
乾杯 羅伊