0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python自制簡(jiǎn)單實(shí)用的日志裝飾器

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-21 14:39 ? 次閱讀

在寫(xiě)代碼的時(shí)候,往往會(huì)漏掉日志這個(gè)關(guān)鍵因素,導(dǎo)致功能在使用的時(shí)候出錯(cuò)卻無(wú)法溯源。

其實(shí),只需要寫(xiě)一個(gè)非常簡(jiǎn)單的日志裝飾器,我們就能大大提升排查問(wèn)題的效率。

1.簡(jiǎn)陋版裝飾器

寫(xiě)一個(gè)裝飾器非常簡(jiǎn)單,因?yàn)楸举|(zhì)上裝飾器就是一個(gè)返回函數(shù)的“高階”函數(shù)而已:

1) 函數(shù)作為參數(shù)傳遞進(jìn)裝飾器。
2) 裝飾器內(nèi)定義一個(gè)函數(shù),處理作為參數(shù)傳遞進(jìn)來(lái)的函數(shù)。
3) 返回這個(gè)裝飾器內(nèi)定義的函數(shù)

圖片

用一下試試看:

圖片

效果如下:

圖片

雖然這樣可以實(shí)現(xiàn)我們所需要的功能,但其實(shí)有很大的優(yōu)化空間。

2.普通版裝飾器

第一版代碼中有一個(gè)顯而易見(jiàn)的問(wèn)題,裝飾器內(nèi)定義的處理函數(shù)不支持kwargs,而在裝飾器中支持kwargs僅僅是舉手之勞而已。

第二個(gè)問(wèn)題是,生成時(shí)間戳的時(shí)候采用字符串截取的形式,這種形式過(guò)于粗暴。其實(shí)可以使用strftime做字符串轉(zhuǎn)換。

修改如下:

圖片

似乎優(yōu)化得差不多了,不過(guò)依然存在改進(jìn)空間。

3.優(yōu)化版裝飾器

在前兩版代碼中,我們使用print進(jìn)行日志輸出,其實(shí)這種處理日志的方式并不標(biāo)準(zhǔn)。

使用logging模塊控制日志輸出是一個(gè)更好地選擇。

為了使用logging模塊記錄日志,我們需要先配置好logging相關(guān)的選項(xiàng)。

1) 首先,生成一個(gè)日志記錄器,并配置日志等級(jí):

圖片

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

圖片

此處可以設(shè)置handler所需要處理的日志等級(jí),沒(méi)有設(shè)置則默認(rèn)使用logger自身的Level,即DEBUG等級(jí)。

3) 最后,將此handler加入到日志記錄器內(nèi):

圖片

logging 完整配置如下:

圖片

使用的時(shí)候非常簡(jiǎn)單,就是把print換成logger.debug即可:

圖片

效果如下:

圖片

這樣,一個(gè)比較完善的日志裝飾器就完成了。

附常用的日志等級(jí)配置:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    566

    瀏覽量

    20384
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61967
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

    10593
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84077
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    理解Python裝飾及其工作原理

    Python 是一種對(duì)新手很友好的語(yǔ)言。但是,它也有很多較難掌握的高級(jí)功能,比如裝飾(decorator)。很多初學(xué)者一直不理解裝飾及其
    發(fā)表于 10-08 11:39 ?2162次閱讀

    Python日志logging模塊簡(jiǎn)單介紹

    Python日志logging模塊的使用-數(shù)據(jù)庫(kù)腳本優(yōu)化003
    發(fā)表于 03-05 13:46

    分享python 7個(gè)好用的裝飾

    、deco.concurrent安裝:pip install deco使用 DECO 就像在 Python 程序中查找或創(chuàng)建兩個(gè)函數(shù)一樣簡(jiǎn)單。我們可以用 @concurrent 裝飾需要并行運(yùn)行的函數(shù)
    發(fā)表于 06-15 16:54

    自制簡(jiǎn)單的星星花環(huán)

    描述簡(jiǎn)單的星星花環(huán)今年我決定用自制的花環(huán)裝飾我的圣誕樹(shù)。為此,您需要取幾顆這樣的星星并通過(guò)電線將它們相互連接,這將傳輸 5 V 電源。每顆星上安裝了 5 個(gè) LED 和 5 個(gè)額定值為 120 歐姆的限流電阻。PCB
    發(fā)表于 07-28 07:58

    一文讀懂Python裝飾

    裝飾前,還要先要明白一件事,Python 中的函數(shù)和 Java、C++不太一樣,Python 中的函數(shù)可以像普通變量一樣當(dāng)做參數(shù)傳遞給另外一個(gè)函數(shù)。
    發(fā)表于 04-28 10:48 ?3396次閱讀
    一文讀懂<b class='flag-5'>Python</b><b class='flag-5'>裝飾</b><b class='flag-5'>器</b>

    讓你學(xué)寫(xiě)Python裝飾的五大理由

    你必須學(xué)寫(xiě)Python裝飾的五個(gè)理由
    的頭像 發(fā)表于 03-02 10:06 ?1818次閱讀

    Python的函數(shù)裝飾器使用方法

    Python中的裝飾是一種可以裝飾其它對(duì)象的工具,簡(jiǎn)單地說(shuō),他們是修改其他函數(shù)的功能的函數(shù)。該工具本質(zhì)上是一個(gè)可調(diào)用的對(duì)象(callabl
    的頭像 發(fā)表于 01-21 11:36 ?1513次閱讀
    <b class='flag-5'>Python</b>的函數(shù)<b class='flag-5'>裝飾</b>器使用方法

    Python裝飾的原理和案例

    Python中的裝飾器用于擴(kuò)展可調(diào)用對(duì)象的功能,而無(wú)需修改其結(jié)構(gòu)?;旧?,裝飾函數(shù)包裝另一個(gè)函數(shù)以增強(qiáng)或修改其行為。我們可以通過(guò)一個(gè)具體的例子了解基礎(chǔ)知識(shí)!讓我們編寫(xiě)一個(gè)包含
    的頭像 發(fā)表于 07-01 11:35 ?2154次閱讀

    Python更優(yōu)雅的日志記錄解決方案Loguru

    ? Loguru: 更優(yōu)雅的日志記錄解決方案! loguru ?是一個(gè)? Python ?簡(jiǎn)易且強(qiáng)大的第三方日志記錄庫(kù),該庫(kù)旨在通過(guò)添加一系列有用的功能來(lái)解決標(biāo)準(zhǔn)記錄的注意事項(xiàng),從而
    的頭像 發(fā)表于 11-18 11:24 ?2831次閱讀

    自制PCB花環(huán)裝飾圣誕樹(shù)

    電子發(fā)燒友網(wǎng)站提供《自制PCB花環(huán)裝飾圣誕樹(shù).zip》資料免費(fèi)下載
    發(fā)表于 07-18 09:42 ?2次下載
    <b class='flag-5'>自制</b>PCB花環(huán)<b class='flag-5'>裝飾</b>圣誕樹(shù)

    Python裝飾的使用

    定義 首先我們先來(lái)了解下裝飾的定義。顧名思義,在Python中,裝飾本質(zhì)上就是一個(gè)函數(shù),它可以接收一個(gè)函數(shù)作為參數(shù),然后返回一個(gè)新的函數(shù)
    的頭像 發(fā)表于 06-21 16:54 ?665次閱讀

    如何通過(guò)阿里云日志服務(wù)搭建一套通過(guò)Python上傳日志的監(jiān)控服務(wù)

    時(shí)間,因此如果能使用市面上現(xiàn)成的系統(tǒng)會(huì)很方便。 本文將教你如何通過(guò)阿里云日志服務(wù)搭建一套通過(guò)Python上傳日志、配置日志告警的監(jiān)控服務(wù)。 1.準(zhǔn)備 開(kāi)始之前,你要確保
    的頭像 發(fā)表于 10-21 14:43 ?769次閱讀
    如何通過(guò)阿里云<b class='flag-5'>日志</b>服務(wù)搭建一套通過(guò)<b class='flag-5'>Python</b>上傳<b class='flag-5'>日志</b>的監(jiān)控服務(wù)

    Python 自制簡(jiǎn)單實(shí)用的日志裝飾

    在寫(xiě)代碼的時(shí)候,往往會(huì)漏掉日志這個(gè)關(guān)鍵因素,導(dǎo)致功能在使用的時(shí)候出錯(cuò)卻無(wú)法溯源。 其實(shí),只需要寫(xiě)一個(gè)非常簡(jiǎn)單日志裝飾,我們就能大大提升排
    的頭像 發(fā)表于 10-31 15:05 ?429次閱讀
    <b class='flag-5'>Python</b> <b class='flag-5'>自制</b><b class='flag-5'>簡(jiǎn)單</b>實(shí)用的<b class='flag-5'>日志</b><b class='flag-5'>裝飾</b><b class='flag-5'>器</b>

    如何寫(xiě)一個(gè)簡(jiǎn)單裝飾

    今天介紹的是一個(gè)已經(jīng)存在十三年,但是依舊不紅的庫(kù) decorator,好像很少有人知道他的存在一樣。 這個(gè)庫(kù)可以幫你做什么呢 ? 其實(shí)很簡(jiǎn)單,就是可以幫你更方便地寫(xiě)python裝飾
    的頭像 發(fā)表于 11-01 09:54 ?402次閱讀
    如何寫(xiě)一個(gè)<b class='flag-5'>簡(jiǎn)單</b>的<b class='flag-5'>裝飾</b><b class='flag-5'>器</b>

    【每天學(xué)點(diǎn)AI】一個(gè)例子帶你了解Python裝飾到底在干嘛!

    今天我們來(lái)聊聊一種能給你的代碼變得“加料”的神器——Python裝飾。就像一杯咖啡,原本它是苦的,為了讓它符合我的口味,我給它添加了糖,添加之后就完美的符合了我的口味。那么,裝飾
    的頭像 發(fā)表于 09-20 16:54 ?194次閱讀
    【每天學(xué)點(diǎn)AI】一個(gè)例子帶你了解<b class='flag-5'>Python</b><b class='flag-5'>裝飾</b><b class='flag-5'>器</b>到底在干嘛!