Während der Log4j 2-Initialisierung werden alle Plugins in der Konfiguration verarbeitet und in Node-Objekten gespeichert. Die Node.toString() -Methode ist so implementiert, dass, wenn das Original-Plugin printObject
Attribut wahr ist, Node.toString() an die Methode toString() des Plugins delegiert wird. Andernfalls wird ein String zurückgegeben, der die Plug-in-Klasse und den Namen des Plugins enthält.
Also im Allgemeinen ist es ratsam, eine gute toString() -Methode anzugeben und printObject
für wahr zu erklären. Auf der anderen Seite ist es keine Katastrophe, wenn Sie beides vermissen: Dies ist hauptsächlich zum Debuggen. Also, wenn printObject
wahr ist aber du toString() nicht überschreibst, passiert alles, dass beim Debuggen deines Plugins keine brauchbaren Werte angezeigt werden.
Log4j 2 protokolliert Details des Initialisierungsprozesses zum StatusLogger auf DEBUG/TRACE-Ebene. Sie können diese Informationen sehen, wenn Ihre Konfiguration mit <Configuration status="trace">
beginnt.
Es ist möglich, dass benutzerdefinierte Plugins das Attribut printObject
verwenden können, um zu beeinflussen, was während der Konfiguration in der StatusLogger-Protokollierung protokolliert wird. Sicher ist, dass nach der Initialisierung der toString() - Wert Ihres Plugins beim Debuggen der resultierenden Node-Werte angezeigt wird.
Vielen Dank, das ist sehr nützlich. Aber ich denke meine Frage ist irgendwie unbeantwortet - Was ist, wenn printObject auf true gesetzt ist, aber keine toString() Methode im Appender? – Andy897
Danke für die Rückmeldung. Die Antwort wurde aktualisiert. Ist das besser? –
Eine letzte Sache. Wenn printObject true ist, aber ich toString() nicht überschreibe, wird es auf Node.toString() zurückfallen? – Andy897