Wie implementiert Log4j die Analyse von Lazy-Argumenten?

8

Angesichts des Java-Argument-Evaluierungsmechanismus Wie implementiert Log4j Lazy Evaluation beim Formatieren der Nachricht mit geschweifte Klammern "um die Kosten der Parameterkonstruktion zu vermeiden", wenn das Protokoll deaktiviert ist?

z.B.

%Vor%     
Linuslabo 24.08.2015, 13:47
quelle

1 Antwort

11

Ich denke, was Log4j bedeutet, ist, dass mit den geschweiften Klammern, sie vermeiden, einen String zu konstruieren, wenn es nicht notwendig ist (z. B. der Level ist nicht Debuggen):

Mit

%Vor%

Die Zeichenfolge wird immer berechnet, auch wenn sie nicht protokolliert ist.

mit

%Vor%

Log4j kann zuerst die Log-Ebene überprüfen und dann entscheiden, ob es sich lohnt, den Nachrichten-String zu erstellen.

Log4j verwendet eine interne Klasse ( org.slf4j.helpers.MessageFormatter ), die alle {} durch die angegebenen Argumente ersetzt. Sie können sich den Quellcode in org.slf4j.impl.Log4jLoggerAdapter.debug(String, Object[])

ansehen     
hinneLinks 24.08.2015, 14:02
quelle

Tags und Links