2013-05-22 247 views
1

時不時地,我遇到的代碼看起來像這樣運行:Java日誌記錄:它是日誌還是日誌記錄器?

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

讓我們假設這是一個slf4j記錄器對象。如果使用Apache Commons Logging,即使該班級將被稱爲Log而不是Logger

我一直在考慮這個問題了一點,並列出了以下兩個選項的幾個優點/缺點:

理由使用logger代替log

  1. 目的的:它是日誌的作者,而不是日誌本身。
  2. 誤導性log是一個天生具有誤導性的名稱,因爲日誌無法讀取。
  3. 使用 log代替 logger

    1. 方法調用可讀性

    原因:在記錄器可用的方法通常被命名爲info()error()等等。因此,log.error()成爲在「記錄此錯誤」出聲所講的命令類似的東西,而logger.error()看起來更像是它會報告上記錄器本身的錯誤,根本談不上什麼logger.debug()聽起來像。

所以,現在的問題。有沒有第三種方法來命名那個麻煩的記錄器?你在項目中使用什麼,爲什麼?

+0

'log'只有一半長,這對我來說是一個殺手鐗。無論如何,絕對不是一個有害的問題。 –

+1

不是一個建設性的問題。 – dharam

+0

其實我認爲這是一個公平的問題,關於編碼風格。我的意見:使用'log',如果是靜態的'LOG'。 – vikingsteve

回答

4

是否有甚至命名那個討厭的記錄儀第三種選擇?

你可以稱它爲任何你喜歡的。即使lumberjack,如果它讓你感到高興。

你在項目中使用什麼,爲什麼?

我使用我當前使用的日誌框架給出的類名。現在,我傾向於使用SLF4J日誌外觀庫,這樣可以重複使用我的代碼的人不會受到我所選擇的日誌記錄的阻礙。

我傾向於使用log作爲實例變量的名稱,如果它是static final,則傾向於使用LOG。爲什麼?因爲1)它是常規的,2)它是更少的字符。無論哪種方式,讀者將很快學習我在代碼中使用的約定。


1 - 這只是總結了我對這個問題的看法......

+2

「伐木工人」+1 –