到目前爲止,我一直在用'打印調試信息',甚至'如果條件:打印調試信息'。但許多人告訴我,這不是最好的方式,我真的應該學習如何使用日誌記錄模塊。快速閱讀後,它看起來好像它做我可能想要的一切,然後一些。它本身就像一個學習項目,我現在想要在其他項目上工作,只需使用最少的功能來幫助我。如果它有什麼不同,我將使用python 2.6,並且由於圖書館和遺留兼容性,它將爲未來的發展做好準備。如何用日誌記錄模塊取代打印調試信息
我現在想要做的就是用我可以打開和關閉的消息來胡椒我的代碼,因爲我設法調試特定區域。作爲「hello_log_world」,我想這一點,並沒有做什麼,我希望
import logging
# logging.basicConfig(level=logging.DEBUG)
logging.error('first error')
logging.debug('first debug')
logging.basicConfig(level=logging.DEBUG)
logging.error('second error')
logging.debug('second debug')
你會發現我使用的是很基本的配置,使用盡可能多的違約可能,讓事情變得簡單。但似乎它太簡單了,或者我不明白日誌背後的編程模型。
我當時認爲sys.stderr最終會
ERROR:root:first error
ERROR:root:second error
DEBUG:root:second debug
...但只有兩個錯誤信息出現。設置級別= DEBUG不會使第二個出現。如果我在程序開始時取消註釋basicConfig調用,所有四個都會得到輸出。
我試圖在一個簡單的級別運行它嗎?
什麼是最簡單的事情,我可以添加到我寫在那裏得到我的預期行爲?
謝謝,這工作,因爲我想它的工作。我沒有點擊過對basicConfig()的調用是一次性的。但是,我認爲它比這更微妙。我懷疑,通過我的聲明「logging.error('first error')」首次使用日誌記錄模塊時,模塊會默認使用basicConfig()進行隱式調用,這意味着第一個和第二個錯誤是無效的。這是一些網關代碼。一旦我通過設置關卡來進行誘惑,然後格式化,我會在太久之前進入多個記錄器。 –
@Neil_UK我認爲你的位置:)網關代碼是一個很好的術語,你應該註冊它。絕對有用的功能,能夠處理與多個記錄器(可寫入'標準輸出,文件,或兩者等)的日誌記錄。有一件事我總覺得很有趣(當談到對調試的記錄時),Ken Thompson主要是通過'print'語句來獲得:) http://jmprog.blogspot.com/2009/11/ken-thompson-關於調試,with.html – RocketDonkey