Logback.groovy LogstashEncoder ändert die Feldnamen

8

Ich habe eine logback.groovy, die Daten an ein logstash im Netzwerk mit einigen benutzerdefinierten Feldern sendet:

%Vor%

So weit, so gut. Allerdings muss ich einige Feldnamen bereinigen, die für elasticsearch downstream nicht gültig sind. Basierend auf der LogstashEncoder-Dokumentation kann dies wie folgt erreicht werden:

%Vor%

Das scheint großartig, aber ich muss das in die logback.groovy Notation einfügen. Ich habe es als hashmap, string und mehr versucht, aber immer mit Cannot cast object 'xxxx' with class 'xxxx' to class 'net.logstash.logback.fieldnames.LogstashFieldNames'

    
Eric Darchis 15.04.2016, 13:18
quelle

2 Antworten

2

Versuchen Sie Folgendes. Möglicherweise müssen Sie auch einen Import für FieldNames und LifeCycle

hinzufügen %Vor%

Sie können die folgende Hilfeseite auf der Logback-Website verwenden, um Ihre XML-Konfiguration in Groovy umzuwandeln.

Ссылка

    
Val 25.04.2016 05:18
quelle
1

Ich musste etwas ähnliches tun, obwohl ich den LoggingEventCompositeJsonEncoder Encoder verwendet habe.

Der Ansatz, den ich verwenden musste, besteht darin, den logstash-logback-encoder-Code zu durchforsten, um die realen Klassen zu ermitteln. Glücklicherweise macht IntelliJs Decompiler dies nicht zu schmerzhaft.

Wenn Sie sich LogstashEncoder ansehen, hat er eine Methode public void setFieldNames(LogstashFieldNames fieldNames) - also brauchen Sie eine Instanz von LogstashFieldNames

LogstashFieldNames wiederum hat Setter für setTimestamp und den Rest, also sollte groovy Ihre Syntax lauten:

%Vor%     
Korny 26.08.2016 08:42
quelle