<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中l(wèi)ogging模塊

          共 4271字,需瀏覽 9分鐘

           ·

          2021-11-21 02:54

          點(diǎn)擊上方“Go語言進(jìn)階學(xué)習(xí)”,進(jìn)行關(guān)注

          回復(fù)“Go語言”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          美人卷珠簾,深坐蹙蛾眉。

          Hey,大家好呀,我是Go進(jìn)階者。

          一、基礎(chǔ)使用

          1. logging使用場(chǎng)景

          日志是什么?這個(gè)不用多解釋。百分之九十的程序都需要提供日志功能。Python內(nèi)置的logging模塊,為我們提供了現(xiàn)成的高效好用的日志解決方案。但是,不是所有的場(chǎng)景都需要使用logging模塊,

          下面是Python官方推薦的使用方法:(來源百度)

          任務(wù)場(chǎng)景最佳工具
          普通情況下,在控制臺(tái)顯示輸出print()
          報(bào)告正常程序操作過程中發(fā)生的事件logging.info()(或者更詳細(xì)的logging.debug())
          發(fā)出有關(guān)特定事件的警告warnings.warn()或者logging.warning()
          報(bào)告錯(cuò)誤彈出異常
          在不引發(fā)異常的情況下報(bào)告錯(cuò)誤logging.error(), logging.exception()或者logging.critical()

          logging模塊定義了下表所示的日志級(jí)別,按事件嚴(yán)重程度由低到高排列(注意是全部大寫!因?yàn)樗鼈兪浅A俊#?/span>

          import logginglogging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')logger = logging.getLogger(__name__)
          logger.info("Start print log")logger.debug("Do something")logger.warning("Something maybe fail.")logger.info("Finish")

          logging中可以選擇很多消息級(jí)別,如debug、info、warning、error以及critical。通過賦予logger或者h(yuǎn)andler不同的級(jí)別,開發(fā)者就可以只輸出錯(cuò)誤信息到特定的記錄文件,或者在調(diào)試時(shí)只記錄調(diào)試信息。

          logging.basicConfig(level = logging.DEBUG,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')

          例如,我們將logger的級(jí)別改為DEBUG,

          再觀察一下輸出結(jié)果

          控制臺(tái)輸出,可以發(fā)現(xiàn),輸出了debug的信息。

          • logging.basicConfig函數(shù)各參數(shù):

          • filename:指定日志文件名;

          • filemode:和file函數(shù)意義相同,指定日志文件的打開模式,'w'或者'a';

          • format:指定輸出的格式和內(nèi)容,format可以輸出很多有用的信息。

          • datefmt:指定時(shí)間格式,同time.strftime();

          • level:設(shè)置日志級(jí)別,默認(rèn)為logging.WARNNING;

          • stream:指定將日志的輸出流,可以指定輸出到sys.stderr,sys.stdout或者文件,默認(rèn)輸出到sys.stderr,當(dāng)stream和filename同時(shí)指定時(shí),stream被忽略;

          #參數(shù):作用%(levelno)s:打印日志級(jí)別的數(shù)值%(levelname)s:打印日志級(jí)別的名稱%(pathname)s:打印當(dāng)前執(zhí)行程序的路徑,其實(shí)就是sys.argv[0]%(filename)s:打印當(dāng)前執(zhí)行程序名%(funcName)s:打印日志的當(dāng)前函數(shù)%(lineno)d:打印日志的當(dāng)前行號(hào)%(asctime)s:打印日志的時(shí)間%(thread)d:打印線程ID%(threadName)s:打印線程名稱%(process)d:打印進(jìn)程ID%(message)s:打印日志信息

          2. 將日志寫入到文件

          設(shè)置logging,創(chuàng)建一個(gè)FileHandler,并對(duì)輸出消息的格式進(jìn)行設(shè)置,將其添加到logger,然后將日志寫入到指定的文件。

          import logginglogger = logging.getLogger(__name__)logger.setLevel(level = logging.INFO)handler = logging.FileHandler("log.txt")handler.setLevel(logging.INFO)formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')handler.setFormatter(formatter)logger.addHandler(handler)
          logger.info("Start print log")logger.debug("Do something")logger.warning("Something maybe fail.")logger.info("Finish")

          打開log.txt文件。

          2. 將日志同時(shí)輸出到屏幕和日志文件

          logger中添加StreamHandler,可以將日志輸出到屏幕上

          import logginglogger = logging.getLogger(__name__)logger.setLevel(level = logging.INFO) #添加StreamHandlerhandler = logging.FileHandler("log.txt")handler.setLevel(logging.INFO)formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')handler.setFormatter(formatter)
          console = logging.StreamHandler()console.setLevel(logging.INFO) #添加StreamHandler
          logger.addHandler(handler)logger.addHandler(console)
          logger.info("Start print log")logger.debug("Do something")logger.warning("Something maybe fail.")logger.info("Finish")

          控制臺(tái)信息。

          log.text信息。

          3. 設(shè)置消息的等級(jí)

          可以設(shè)置不同的日志等級(jí),用于控制日志的輸出。

          #日志等級(jí):使用范圍FATAL:致命錯(cuò)誤CRITICAL:特別糟糕的事情,如內(nèi)存耗盡、磁盤空間為空,一般很少使用ERROR:發(fā)生錯(cuò)誤時(shí),如IO操作失敗或者連接問題WARNING:發(fā)生很重要的事件,但是并不是錯(cuò)誤時(shí),如用戶登錄密碼錯(cuò)誤INFO:處理請(qǐng)求或者狀態(tài)變化等日常事務(wù)DEBUG:調(diào)試過程中使用DEBUG等級(jí),如算法中每個(gè)循環(huán)的中間狀態(tài)

          4. 捕獲traceback

          Python中的traceback模塊被用于跟蹤異常返回信息,可以在logging中記錄下traceback.

          import logginglogger = logging.getLogger(__name__)logger.setLevel(level = logging.INFO)handler = logging.FileHandler("log.txt")handler.setLevel(logging.INFO)formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')handler.setFormatter(formatter)
          console = logging.StreamHandler()console.setLevel(logging.INFO)
          logger.addHandler(handler)logger.addHandler(console)
          logger.info("Start print log")logger.debug("Do something")logger.warning("Something maybe fail.")try: open("sklearn.txt","rb")except (SystemExit,KeyboardInterrupt): raiseexcept Exception: logger.error("Faild to open sklearn.txt from logger.error",exc_info = True)
          logger.info("Finish")

          控制臺(tái)和日志文件log.txt中輸出。

          可以使用logger.exception(msg,args),它等價(jià)于logger.error(msg,exc_info = True,args)。

          logger.error("Faild to open sklearn.txt from logger.error",exc_info = True)

          替換為logger.exception("Failed to open sklearn.txt from logger.exception")

          控制臺(tái)和日志文件log.txt中輸出。

          二、總結(jié)

          ????本文以Pythonl基礎(chǔ)為例,主要介紹了logging模塊的基礎(chǔ)使用方法,以及在現(xiàn)實(shí)應(yīng)用中遇到的問題,進(jìn)行了詳細(xì)的解答。

          ????通過一些案例的講解和運(yùn)行效果圖的截取,使用Python語言,能夠幫助讀者更好的去理解Python。

          ????我是Go進(jìn)階者,如果覺得還不錯(cuò),記得動(dòng)手點(diǎn)贊一下哈。感謝你的觀看!

          -------------------?End?-------------------

          歡迎大家點(diǎn)贊轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          瀏覽 51
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  中国A毛片 | 日韩啪啪啪网站 | 日韩精品a∨中文在线播放 | 强伦人妻一区二区三区 | 精品高清无码一区二区三区四区 |