2009-04-21 8 views
12

Ich habe einige Webservices in meiner Anwendung und ich möchte sie in verschiedenen Dateien, basierend auf dem Webservice-Namen zu protokollieren. Dafür bin ich Loggern mitWas ist der Aufwand für die Erstellung eines Log4j Logger

myLogger = Logger.getLogger(logKey); 

Schaffung Ich frage mich, ob ich diese Logger-Cache sollte die Schaffung sie für jeden Aufruf zu vermeiden, oder kann ich den Aufwand zu ignorieren.

+0

Vertrauen Sie nicht, was die Leute Ihnen sagen ... verwenden Sie die Quelle! – zvikico

Antwort

23

Logger werden bereits von log4j mit dem Standard-Log-Repository (Hierarchy) zwischengespeichert. Mit anderen Worten, es ist nur eine Hashtabellen-Suche.

Allerdings tendest du tendieren, um den Logger statisch zu machen, so dass es am Ende nur einmal pro Klasse aufgerufen wird.

+4

+1, aber es macht mehr Spaß, Leute mit weniger Ruf zu wählen – willcodejavaforfood

+0

Würde der Logger nicht statisch machen, dass du sein Level zur Laufzeit änderst (zum Beispiel durch eine MBean)? In der Theorie nicht, aber ich dachte, das war der Fall mit Java-Logging. –

+0

Ich denke nicht * so *. Ich denke, das Level-Zeug wird dynamisch geprüft, anstatt im konstruierten Logger eingefroren zu werden. –

9

Diese Methode Logger.getLogger (logKey) sucht im Logger-Cache nach einem Logger mit dem in logKey übergebenen Namen. Wenn es nicht existiert, erstellt es eins. Erster Aufruf für einen Logger-Namen, ein Logger wird erstellt, aber spätere Aufrufe werden ihn aus dem Cache holen, so dass Sie in Ihrem Code nicht behandeln müssen.