Ich habe eine statusfreie REST-API auf Spring Boot 1.4.2 erstellt. Ich möchte alle API-Aufrufe in Elch protokollieren. Anforderungen und Antwortdaten (Header, Parameter, Payload) müssen ebenfalls protokolliert werden. Ich möchte sie nicht 1: 1 protokollieren - ich möchte sensible Daten usw. ausfiltern.Auslassen von Feldern während der Serialisierung für bestimmte Gson Serializer
Ich habe einen Aspekt erstellt, der den Methodenaufruf meiner Methode abfängt: @RestController
. Ich erstellte eine benutzerdefinierte Annotation für den Parameter der Methode, die protokolliert werden sollte (ich benutze sie auch für Payloads, die von @RequestBody
kommentiert wurden), gefolgt von this Artikel, und er gab mir Zugriff auf meine Datenübertragungsobjekte in meinem @Around
Rat. Ich interessiere mich nicht für ihren Typ - ich möchte logger.debug(logObject)
anrufen und dieses Protokoll an logstash senden.
Soweit ich verstehe Log-Nachricht sollte als JSON mit JSONLayout in Log4j2 Appender gesendet werden, um Dinge auf der Log-Seite zu erleichtern. Also serialisiere ich meine logObject
in JSON Log-Nachricht, aber während dieser und dieser nur Serialisierung möchte ich sensible Daten herausfiltern. Ich kann nicht verwenden, weil meine Steuerung vom selben Feld abhängt.
Kann ich irgendwie eine @IgnoreForLogging
Annotation erstellen, die nur von meinem benutzerdefinierten Gson-Serialisierer erkannt wird, den ich innerhalb der Protokollierungsberatung verwende und der in der Spring-Infrastruktur ignoriert wird? Ist mein logging in logstash approach sogar korrekt (ich versuche es zum ersten mal einzurichten)?