2016-06-10 18 views
4

Ich habe eine Frage, auf die ich noch keine Antwort finden konnte. Was ist der Unterschied zwischen den beiden Linien?LoggerFactory vs Logger

private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class); 

und

private static final Logger LOGGER = Logger.getLogger(MyClass.class); 

Welche sollte man verwenden und warum? Vielen Dank.

Antwort

3

Sie haben die Frage sowohl mit als auch mit markiert. Daher nehme ich an, dass Ihr Projekt für die Verwendung von SLF4J eingerichtet ist und dass es seine log4j-Bindung verwendet.

Wenn Sie die SLF4J Bindung in Ihrer Klasse verwenden (import org.slf4j.Logger; an der Oberseite), dann müssen Sie LoggerFactory.getLogger verwenden (und Sie würden auch import org.slf4j.LoggerFactory; benötigen).

Wenn Sie log4j direkt verwenden (mit an der Spitze Ihrer Klasse), verwenden Sie Logger.getLogger.

In der Regel sollte SLF4J der Standard sein, den Sie für alle Protokollierungsbefehle verwenden, und Sie müssen sich darum sorgen, dass Sie sich mit dem eigentlichen Protokollierungsframework verbinden. Wenn Ihr Projekt SLF4J verwendet, verwenden Sie die SLF4J-Bindungen. Oder, wenn Sie nur log4j direkt verwenden möchten, können Sie es direkt verwenden, und vielleicht brauchen Sie nicht einmal die SLF4J-Bibliothek. (Ich bin ein großer Fan von SLF4J selbst, also würde ich vorschlagen, es für alles zu verwenden, aber das ist nur meine Meinung.)

Ich vermute, dass vielleicht Ihre Entwicklungsumgebung wählt automatisch eine dieser zu importieren, und Sie können sogar verschiedene Logger s in verschiedenen Klassen importiert haben, ohne dass Sie überhaupt merken, dass sie nicht dieselbe verwenden.