Python 自制簡單實(shí)用的日志裝飾器
在寫代碼的時候,往往會漏掉日志這個關(guān)鍵因素,導(dǎo)致功能在使用的時候出錯卻無法溯源。
其實(shí),只需要寫一個非常簡單的日志裝飾器,我們就能大大提升排查問題的效率。
1.簡陋版裝飾器
寫一個裝飾器非常簡單,因為本質(zhì)上裝飾器就是一個返回函數(shù)的“高階”函數(shù)而已:
1) 函數(shù)作為參數(shù)傳遞進(jìn)裝飾器。
2) 裝飾器內(nèi)定義一個函數(shù),處理作為參數(shù)傳遞進(jìn)來的函數(shù)。
3) 返回這個裝飾器內(nèi)定義的函數(shù)

用一下試試看:

效果如下:

雖然這樣可以實(shí)現(xiàn)我們所需要的功能,但其實(shí)有很大的優(yōu)化空間。
2.普通版裝飾器
第一版代碼中有一個顯而易見的問題,裝飾器內(nèi)定義的處理函數(shù)不支持kwargs,而在裝飾器中支持kwargs僅僅是舉手之勞而已。
第二個問題是,生成時間戳的時候采用字符串截取的形式,這種形式過于粗暴。其實(shí)可以使用strftime做字符串轉(zhuǎn)換。
修改如下:

似乎優(yōu)化得差不多了,不過依然存在改進(jìn)空間。
3.優(yōu)化版裝飾器
在前兩版代碼中,我們使用print進(jìn)行日志輸出,其實(shí)這種處理日志的方式并不標(biāo)準(zhǔn)。
使用logging模塊控制日志輸出是一個更好地選擇。
為了使用logging模塊記錄日志,我們需要先配置好logging相關(guān)的選項。
1) 首先,生成一個日志記錄器,并配置日志等級:

2) 配置日志格式、增加handler控制輸出流:

此處可以設(shè)置handler所需要處理的日志等級,沒有設(shè)置則默認(rèn)使用logger自身的Level,即DEBUG等級。
3) 最后,將此handler加入到日志記錄器內(nèi):

logging 完整配置如下:

使用的時候非常簡單,就是把print換成logger.debug即可:

效果如下:

這樣,一個比較完善的日志裝飾器就完成了。
附常用的日志等級配置:

我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實(shí)戰(zhàn)教程,請持續(xù)關(guān)注我們。
最后推薦一下我們的星球:由菜鳥學(xué)Python原班人馬建了一個投資星球,匯聚一批喜歡投資的朋友一起分享投資的技巧,不限于基金,股票等其他品種,提高自己的財商,一起讀書打卡,歡迎加入。
推薦閱讀:
入門: 最全的零基礎(chǔ)學(xué)Python的問題 | 零基礎(chǔ)學(xué)了8個月的Python | 實(shí)戰(zhàn)項目 |學(xué)Python就是這條捷徑
干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 | 從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI: 會做詩的機(jī)器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影
小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水印! | 一鍵把html網(wǎng)頁保存為pdf!| 再見PDF提取收費(fèi)! | 用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r機(jī)票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐!|
年度爆款文案
點(diǎn)閱讀原文,領(lǐng)AI全套資料!


