2016-06-10 56 views
4

我有一個問題,我還找不到答案。那麼兩條線有什麼區別?LoggerFactory vs Logger

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

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

,人們應該使用一個,爲什麼?謝謝。

回答

3

你已經用這兩個標記了問題,所以我假設你的項目設置爲使用SLF4J並且它使用它的log4j綁定。

如果您在課堂上使用SLF4J綁定(頂部有import org.slf4j.Logger;),那麼您需要使用LoggerFactory.getLogger(並且您還需要import org.slf4j.LoggerFactory;)。

如果您直接使用log4j(在班級頂部有import org.apache.log4j.Logger;),則使用Logger.getLogger

通常情況下,讓SLF4J成爲用於所有日誌記錄命令的標準,並且擔心連接到實際的日誌記錄框架。所以,如果你的項目使用SLF4J,那麼使用SLF4J綁定。或者,如果你只是想直接使用log4j,那麼你可以直接使用它,也許你甚至不需要使用SLF4J庫。 (我自己是SLF4J的忠實粉絲,所以我建議將它用於一切,但這僅僅是我的意見。)

我在猜測,也許你的開發環境是自動選擇其中之一來導入,而且甚至可能會在不同類別中導入不同的Logger,而您甚至沒有意識到它們並未使用相同的類別。