我使用的是標準的Python記錄模塊在我的Python應用程序:懶惰記錄消息字符串評估
import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger("log") while True: logger.debug('Stupid log message " + ' '.join([str(i) for i in range(20)])) # Do something
的問題是,雖然調試級別不啓用,那個愚蠢的日誌消息是在每次循環迭代計算,這嚴重損害了性能。
有沒有解決方案?
在C++中,我們有log4cxx
包,提供了這樣的宏:
LOG4CXX_DEBUG(logger, messasage)
這有效地評估爲
if (log4cxx::debugEnabled(logger)) { log4cxx.log(logger,log4cxx::LOG4CXX_DEBUG, message) }
但因爲在Python中沒有宏(據我所知),如果有一個有效的方法做日誌?
簡單而高效。我喜歡。這應該可以獲得更多的讚譽。 – Rockallite 2014-09-16 13:26:53
效率取決於手頭的情況,您應該始終以自己的方案爲基準。就我而言,懶惰的日誌記錄不需要任何參數,但可以在調用'__str__'時從類中收集東西。所以基本上,我得到了幾乎相同的結果。看到我的評論[這裏](https://gist.github.com/schnittstabil/9372911#gistcomment-1910973) – guyarad 2016-11-01 07:47:52
@guyarad:你也需要花時間來創建'lazyjoin'實例。另請參閱我的答案[Python:如何做懶惰調試日誌記錄](http://stackoverflow.com/questions/21377020/python-how-to-do-lazy-debug-logging/22204021#22204021)。 – schnittstabil 2016-11-01 18:46:17