2015-11-08 58 views
4

我有兩個選項可以在一個類中初始化Logger在班級中初始化記錄器的最佳方式是什麼?

第一種方式是提供Class<?>的實例:

logger = LoggerFactory.getLogger(SignUpController.class); 

,第二個被傳遞String標識符(包和類名):

logger = LoggerFactory.getLogger("controller.SignUpController"); 

的問題是:

初始化類的記錄器的最佳方法是什麼?
應該使用哪些修飾符? (訪問修飾符,staticfinal

回答

6

我用

public final Logger = LogFactory.getLogger(getClass()); 

原因之一,這將始終確保即使在類名的重構後的正確的類名。每個實例化對象對每個類的一個記錄器實例的開銷是可忽略的。

我只需要使用靜態記錄器,當我需要以靜態上下文記錄某些內容,然後使用第一種方法對其進行初始化。

4

使用第一個

private static final Logger logger = LoggerFactory.getLogger(SignUpController.class); 

因爲,該API(其接受類對象),該方法在內部調用完全限定類名,所以日誌記錄控制/配置可以正確完成。

我用private static final因爲私人:爲記錄器實例不應該提供給類以外的和靜態:沒有使用具有一類的每個對象和獨立的實例最終給不給初始化後更改引用。

相關問題