Ich versuche, Java-Protokolle in Syslog im JSON-Format zu protokollieren, aber ich habe ein seltsames Problem gefunden, bei dem der Syslog-Header nicht wie erwartet festgelegt wird.logback logstash encoder Syslog-Header nicht gesetzt
Ich teste diese auf einem Mac und unter Verwendung von wireshark die Pakete zu ergreifen, während sie mit dem 514-Port UDP (via Loopback-Schnittstelle)
Mein logback.xml wird wie folgt gesendete:
<?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>
und wenn ich am Ausgang von wireshark sehe ich sehe nur die JSON (kein PRI-Header-Feld angegeben)
[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
protokollierte Wenn ich zum Standard logback Syslog appender wechseln (nicht JSON Ausgabe)
...
<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>
...
ich die richtige Header Anlage Rohwert < 174> siehe tun und analysierte Werte in den wireshark Paketen LOCAL5.INFO
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)
Die syslog-Header erforderlich sind (in der syslog conf) zu Leiten Sie die Protokollnachrichten an die richtigen Dateien weiter, ohne dass ich die Protokolleinträge anhand von Einrichtungsfiltern herausfiltern kann.
Ich verwende SpringBoot (1.2.7), (das logback verwendet 1.1.3), Apache Kamel (2.16.1) und logstash-logback-Encoder (4.6)
Wenn ich im Debug führen Sie es sieht so aus, als ob die SyslogStartConverter.convert-Methode nie aufgerufen wird.
Prost Roy