2013-02-25 40 views
2

將值插入日誌消息中是否有一些最佳做法?我的谷歌福不是有效的這裏,但我得到這樣this實例說:將值插入日誌消息的正確方法

#Change all logging from this 

logger.warning("This is a %s" % var) 

#to 

logger.warning("This is a %s", var) 

像它的最佳做法是每個人都必須遵守。有理由嗎? var(像一個類的對象)的任何值都會在這裏失敗嗎?

回答

2

使用後者。記錄模塊只會在處理消息時插入值

這意味着您可以爲調試消息節省CPU週期,例如,如果日誌級別排除它們。

這是記錄在logging HOWTO, "Optimization" chapter

消息的格式化參數被推遲,直到它無法避免。

您可能需要按照該章節給出的其他建議來避免昂貴的計算,以便進行日誌記錄。

在內部,logging模塊使用第一種形式,所以任何無法轉換爲字符串的值都將失敗。

1

我認爲第二種形式更好,因爲記錄者有機會檢查在替換之前是否啓用了warning級別。