JavaログをJSON形式でSyslogに記録しようとしていますが、Syslogヘッダーが期待どおりに設定されていないという奇妙な問題が見つかりました。logback logstash encoder syslogヘッダーが設定されていません
彼らはUDP 514ポートに送信されますと、私は次のように私のlogback.xmlがある
(ループバックインタフェースを介して)は、Mac上でこれをテストし、パケットをつかむためのwiresharkを使用しています:<?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の出力を見ると、私は標準logbackシスログアペンダ(非JSONに切り替えると私は
[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
(なしPRIヘッダフィールドが与えられていない)JSONが記録されている参照出力)I、正しいヘッダ施設生値< 174>を参照して行うと値がシスログCONFに(syslogのヘッダが必要である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解析さ
...
<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>
...
)にログメッセージを正しいファイルにルーティングするので、ファシリティフィルタに基づいてログエントリをフィルタリングすることはできません。
私は(logback 1.1.3を使用しています)SpringBoot(1.2.7)、Apacheのラクダ(2.16.1)とlogstash-logback-エンコーダを使用しています(4.6)
私がデバッグで実行することSyslogStartConverter.convertメソッドが呼び出されないように見えます。ヘッドの多くは、それが例のラッピングLayoutWrappingEncoder部分の問題だように見える傷後
乾杯 ロイ