2016-04-01 15 views

Antwort

0

Lieber den ersten bevorzugen.

Wenn kein Protokoll geschrieben wird, weil Ihr Log-Level höher als info dann Sie die Kosten für den Anruf zu log.info und dem Aufbau des temporären Parameter Array. Aber der Logger wird die Protokollzeichenfolge nicht erstellen.

Im zweiten Fall haben Sie den Anruf plus die Formatierung der Protokollzeichenfolge, die wahrscheinlich zeitaufwändiger ist.

1

Es gibt keinen besseren oder schlechterer Weg. Beide geben Ihnen die gleiche Ausgabe. Ich schlage jedoch vor, slf4j (mit Logback-Provider zum Beispiel) zu verwenden. Mit einer solchen Konfiguration können Sie sich folgendermaßen anmelden:

log.info("{} {} {}", a, b, c); 
0

Bessere Schreibweise besteht darin, die Werte in den Logger zu übertragen. Die info() oder debug() des Loggers verwendet variable Argumente. Angenommen, Sie verwenden log4j oder slj4j oder logback als Bibliothek. Wenn Sie sich nicht entschieden haben, denken Sie ernsthaft an logback.

Der richtige Weg zu schreiben ist wie folgt.

log.info("Value1 :{} Value2: {} Value3: {}", a, b, c); 

Sie müssen kein String-Objekt explizit erstellen. Dies wird intern durch das Protokollierungs-Framework gehandhabt.

Wenn es eine spezifische Verarbeitung des Objekts nur für die Protokollierung gibt, schreiben Sie die Protokollierung nach der Überprüfung von isDebugEnabled(). In einem Produktionssystem wird dies also nicht verarbeitet.

Verwandte Themen