2016-07-01 13 views
1

Ich verwende log4js, um meine Anwendung zu loggen, und ich möchte Logs an logstash senden.Sende JSON von log4js an logstash und Felder

ist hier ein defalt appender für Log4js from here:

"appenders": [ 
    { 
     "type": "console" 
    }, 
    { 
     "host": "127.0.0.1", 
     "port": 5000, 
     "type": "logstashUDP" 
    } 
    ] 

und hier ist die logstash Konfigurationsdatei:

input { 
    udp { 
    port => 5000 
    type => "json" 
    } 
} 

filter { 
    date { 
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] 
    } 
} 

output { 
    stdout {} 
} 

Senden Protokolle richtig funktioniert, aber ich schicke JSON-Protokoll und in logstash I siehe ein Feld für jeden Charakter des JSON.

2016-07-01T10: 29: 36.161Z 127.0.0.1 { "@version": "1", "@ Zeitstempel": "2016-07-01T10: 29: 36.160Z" message " ":" Meine Nachricht ... "," Felder ": {" 0 ":" {"," 1 ":" \ n "," 2 ":" "," 3 ":" "," 4 " : „\““, ...

ich bin neu in logstash aber ich mag alle Felder in einem großen String Gruppe Wie kann ich es tun

+0

Sie benötigen Codec => "json" in Ihrem udp zu verwenden, um es zu sagen, dass die eingehenden Protokolle sind json Protokolle. Der Standard ist einfach – pandaadb

+0

@pandaadb Ok, danke, wenn Sie es als Antwort hinzufügen können, werde ich es als akzeptiert anderen Weg überprüfen Ich werde die Frage löschen – nkint

Antwort

3

, um Ihre Eingabe zu kennen.? dass es json ist, müssen Sie einen Codec hinzufügen:

input { 
    udp { 
    port => 5000 
    type => "json" 
    codec => "json" 
    } 
} 

Grüße,

Artur