隨手養成 Python 好習慣-簡單導入 logging 模組
Posted on Sep 9, 2016 in Python 程式設計 - 初階 by Amo Chen ‐ 2 min read
如果說最方便且偷懶的對程式進行除錯訊息的記錄是 print()
的話,那麼我的建議是-「如果你正在使用最方便且偷懶的方法,而且知道這種方式不好的話,那麼請花費一點點時間看完這篇文章;如果你早已經像喝水一樣自然地使用 logging
模組的話,可以不需要在閱讀此篇文章」
學會使用 logging 模組的好處,並非是要將 print()
完全從程式中除去,而是希望對程式產生的訊息進行分層控管,甚至能夠針對不同級別的訊息進行過濾、處理與通知,例如 log 出現 critical 級別的訊息時,我們真的很希望第一時間得到通知,那麼使用 logging
模組並且實作自己對於 critical log 的處理器(handler),真的是 Z>B 。
logging 最簡單的使用方式,在 Cory 所分享的 A Brief Digression About Loggin 這篇文章中就已經寫得十分清楚了。
依照 Cory 的方式,如果是希望在模組中使用 logging 模組的話:
在模組中的 __init__.py
中加入以下程式碼:
import logging
logging.getLogger(__name__).addHandler(logging.NullHandler())
在模組中其他程式第一行加上以下程式碼。
log = logging.getLogger(__name__)
依照需求自行添加 log.debug()
, log.info()
, log.warning()
, log.error()
, log.critical()
5 種級別的 log 記錄方法。
不過需要注意的是,預設這些 log 訊息是沒有被開啟的,因此 Cory 又描述了如何打開這些訊息的方法,即在你的主程式中加入以下程式開啟將 log 顯示的功能(可依照級別需求進行修改,例如將 logging.DEBUG
修改為 logging.INFO
)。
import logging
logging.basicConfig(level=logging.DEBUG)
或者可以將上述 log 顯示方式改為記錄到檔案之中( logging.basicConfig(level=logging.DEBUG, filename='debug.log')
)。
以上就是 Cory 提供的簡單方法,如果對其他使用方式有興趣的話,可以再看看官方文件尋找更多用法。
參考資料:
https://docs.python.org/2/library/logging.html
https://lukasa.co.uk/2014/05/A_Brief_Digression_About_Logging/