Logbook:Python 快速日誌記錄實踐
作者:東東 yasking
來源:https://blog.yasking.org/a/python-logbook.html
Python 本身有logging日誌記錄模塊,之前發現了logbook這個包,介紹說是替代logging,索性整理一下,方便之後使用
上邊這是文檔中給出的例子,它定義了許多的Handler,可以把日誌記錄到標準輸出,文件,E-MAIL,甚至Twitter
StreamHandler
使用 記錄的日誌會以流輸出,這裡指定 也就是記錄到標準輸出,與 一樣
(一)可以使用 來在一定作用域內記錄日誌
(二)也可以指定作用於整個應用
FileHandler
使用 可以把日誌記錄到文件,這也是最常見的方式
日誌就寫到了 文件
同時輸出到文件與STDOUT
同時把記錄輸出到多個地方可以方便查閱和記錄,初始化 的時候設置 參數就可以使得其它 也可以接收到記錄
另外,通過 可以設置日誌級別,級別如下,從下到上級別越來越高,如 設置為 , 則除了 外都會記錄,設置不同的級別,搭配各種 可以讓日誌的記錄更加靈活,上邊使用的 可以使用不同的記錄級別
MailHandler
和日誌文件同樣重要的就是 了,當出現了比較嚴重錯誤的時候就要發送郵寄進行通知
詳細的文檔見:
分別使用了 和 郵箱發送郵件測試,使用的郵箱需要開啟SMTP許可權,代碼如下(163和qq發送參數稍有不同)
163 Mail
QQ Mail
內容 中的用大括弧的會進行數值替換, 欄位上邊的``和下邊需要空一行,這樣解析參數收到的郵件才會正確的顯示標題
Record Processors
上邊發送郵件的例子,參數裡面有一個 ,這個參數是可以自己指定的,比如編寫WSGI的程序,處理URL,每一條記錄都希望記錄到訪問者的IP,可以這樣做:
使用自定義參數,需要重新設置 ,才能進行記錄,record類可以在這裡找到,詳細參數見
Output:
日期格式
上邊在介紹的自定義日誌格式的時候使用的時間是雖然指定了格式但是是 格式,跟北京時間是差了8個小時的。所以需要設置讓它記錄本地的時間
在剛才的例子前面加上如下代碼即可
更過日期格式化的設置參看:api/utilities -
threadbound與applicationbound
從最開始的例子來看,可以使用兩種方式來記錄日誌,一種是在最開始使用 來激活,另一種是使用的時候用 構造上下文,現在進行一些補充
使用可以取消記錄的上下文
application作用於整個應用,thread只針對當前線程
消除嵌套
使用多個Handler的時候,使用 方式啟動的上下文不會形成嵌套,但是使用 啟動的上下文會形成嵌套,可以使用
使用的時候就只需要一個 來啟動
是個不錯的包,記錄日誌靈活方便,比自己包裝發送郵件方便了不少,整理了一些基本用法,還有不少值得學習的功能,暫時能用到的基本上就這麼多,之後用到高級的功能再繼續研究補充。
題圖:pexels,CC0 授權。


TAG:Python |