<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 自制簡單實用的日志裝飾器

          共 859字,需瀏覽 2分鐘

           ·

          2022-07-06 08:54

          ↑ 關(guān)注 + 星標(biāo) ,每天學(xué)Python新技能

          后臺回復(fù)【大禮包】送你Python自學(xué)大禮包

          人生苦短,快學(xué)Python!在寫代碼的時候,往往會漏掉日志這個關(guān)鍵因素,導(dǎo)致功能在使用的時候出錯卻無法溯源。

          其實,只需要寫一個非常簡單的日志裝飾器,我們就能大大提升排查問題的效率。

          1.簡陋版裝飾器



          寫一個裝飾器非常簡單,因為本質(zhì)上裝飾器就是一個返回函數(shù)的“高階”函數(shù)而已:

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


          用一下試試看:


          效果如下:



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

          2.普通版裝飾器



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

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

          修改如下:


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


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



          在前兩版代碼中,我們使用print進(jìn)行日志輸出,其實這種處理日志的方式并不標(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即可:



          效果如下:



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

          附常用的日志等級配置:

          人生苦短,快學(xué)Python!我們明天見~~~



          1. 深圳一普通中學(xué)老師工資單曝光,秒殺程序員

          2. 寫 Python 腳本,一定要加上這個!


          瀏覽 66
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青伊人网| se.av | 欧美一性一乱一交一视频 | 成人黄色视频网站免费观看 | 在线免费精品福利 |