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 %code%
Versuchen Sie Folgendes. Möglicherweise müssen Sie auch einen Import für %code% und %code%
hinzufügen %Vor%Sie können die folgende Hilfeseite auf der Logback-Website verwenden, um Ihre XML-Konfiguration in Groovy umzuwandeln.
Ich musste etwas ähnliches tun, obwohl ich den %code% 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 %code% - also brauchen Sie eine Instanz von LogstashFieldNames
LogstashFieldNames wiederum hat Setter für %code% und den Rest, also sollte groovy Ihre Syntax lauten:
%Vor%