Ich habe diese Webapplikation, die ziemlich stark protokolliert. Wir haben für jeden anfordernden Thread einen Aufruf an MDC
implementiert, um einen Benutzer in unseren Protokollen nachverfolgen zu können.Logging optionale Schlüsselwerte
A logmessage könnte wie folgt aussehen:
INFO [2017-10-09 10:10:55,841] user_uuid=123-123-123 com.myapp.SomeClass: Some log message...
Das Problem ist jetzt, dass die meisten der Zeit, keine aktuellen Benutzer vorhanden ist, und wir haben keine Verwendung für das user_uuid
Feld im Protokoll Beispiel oben. Also statt, wird es wie folgt aussehen:
INFO [2017-10-09 10:10:55,841] user_uuid= com.myapp.SomeClass: Some log message...
Gibt es eine Möglichkeit, nicht die MDC Schlüssel & Wert in Protokoll schreiben, wenn es keine MDC-Wert ist? Einige Log-Formate habe ich noch nicht gefunden?
Ich mag es so aussehen, wenn kein MDC Wert gefunden wird:
INFO [2017-10-09 10:10:55,841] com.myapp.SomeClass: Some log message...
Die oben (MDC) Beispiele sind wie so konfiguriert:
%-5p [%d{ISO8601,UTC}] user_uuid=%mdc{user_uuid:-} %c: %m%n%rEx
Sie können nur den vollständigen MDC anzeigen (dies erfordert natürlich, dass Sie nur wichtige Informationen dort speichern), dann würde nur der vorhandene Inhalt protokolliert. In Ihrem Beispiel haben Sie den 'user_uuid =' Part fest codiert, so dass Sie nirgendwohin gehen werden. – Kayaman
Siehe https://stackoverflow.com/questions/24616745/how-to-conditional-add-text-from-mdc-on-a-log4j-pattern für ein Duplikat. – Kayaman