2011-11-09 38 views
0

在django中,我們有settings.py,它定義了整個項目的DEBUG如何在django代碼中執行logging.DEBUG?

現在, 我的調試級別是在settings.py中獨立配置的。

我該如何使用logging.DEBUG?

WAY1:

if settings.DEBUG: 
    logging.debug("Debug message") 

Way2:

# Without checking settings.DEBUG 
logging.debug("Debug message") 

有什麼好的做法?

我認爲我們應該使用Way2,因爲日誌級別已經決定 - 如果消息將被記錄或不記錄。 但是,有人說Way1是一種標準做法。

+0

如果你使用'logging'模塊,它應該是'logging.debug()'而不是全部大寫。 –

+0

對不起..糾正! –

回答

4

我認爲過度依賴諸如DEBUG之類的全局設置並不是一件好事,DEBUG會改變應用程序的整體行爲。

如果您想審覈代碼並記錄生產中的東西,該怎麼辦?你不會把DEBUG變成真實的,你呢?你寧願淡化你的日誌過濾器。

從更具風格的角度來看,使用2個設置(DEBUG和日誌級別)影響單個行爲是沒有意義的,也不是非常蟒蛇式的。

長答案簡短:我認爲方法2在技術上和文體上都是優越的。

+0

感謝您的回覆.. –

1

第二種方法很好,事實上我一直都在使用它。

我在這裏提出答案的唯一原因是因爲我們事實上在幾年前的某個工作項目中做了類似於(1)的事情,事實證明,儘管我們沒有在生產中的調試級別記錄任何東西到一個文件的成本創建調試消息本身非常昂貴並影響性能。

  • (1)在生產中不創建調試級消息在所有,只是一個布爾檢查代替。
  • (2)在生產過程中,調試消息被創建並傳播,但沒有登錄到文件中(如果事實上你已經設置了日誌記錄的話)。

該項目是一個相當大的計算農場,每盎司的性能重要,這從我以後就不是這種情況,可能不是你的情況,但嘿...我只是想我會提到它。

+0

感謝您分享體驗! –