2011-09-06 22 views
18

可以從多個線程訪問類。在這種情況下必須記錄器也是最終的和靜態的? 謝謝。應該記錄器總是最終的和靜態的?

+2

代碼示例可能有助於澄清問題。 – Peter

+0

也看到這個帖子了這個最佳實踐http://stackoverflow.com/questions/6653520/why-do-we-declare-loggers-static-final –

+0

你可以得到,如果你使用一個在所有擺脫這個變量的更多討論[jcabi日誌](http://www.jcabi.com/jcabi-log/),圍繞SLF4J – yegor256

回答

28

所有主要的Java日誌包(java.util.logginglog4j等)同步和線程安全的。即使從多個線程調用該類,每個類的private final static記錄器的標準模式也可以。

4

是的記錄器應該是靜態的和最終的。也最好是私人的。每個類只需要一個記錄器實例,除非您要動態更改日誌首選項,否則最好使其成爲最終的。

記錄器是線程安全的,你不必擔心線程。

2

使得最終記錄器和靜態或將不以任何方式影響使用記錄儀的線程安全。如果記錄器實例正在從多個線程使用,而不是確保您正在使用線程安全記錄器。

一般的記錄應該是私有靜態最後,但不要以爲這使得線程安全的。最常見的日誌框架是線程安全的,所以如果你使用其中的一個,你應該是好的。