python常識系列08-->logging模塊基礎入門


前言

    努力從今天開始,成功從“零”開始。

一、logging模塊是什么?

是Python內置的標准模塊,主要用於輸出運行日志

二、日志是什么?

  • 日志是代碼的必要組成部分
  • 記錄日志能顯示程序當前運行狀態
  • 出問題后定位當時問題
  • 對日志記錄的數據挖掘進行統計和分析(比如 **地區登錄APP人數較多等)

三、python日志級別

DEBUG:調試信息
INFO:有用的信息
WARNING:警告信息 (默認日志級別)
ERROR:錯誤信息
CRITICAL:嚴重錯誤信息
NOTSET:非級別,表示不設置,按照父logger級別來過濾日志

日志級別關系:

NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

備注:如果把log的級別設置為INFO, 那么小於INFO級別的日志都不輸出, 大於等於INFO級別的日志都輸出。也就是說,日志級別越高,打印的日志越不詳細。

四、logging模塊實戰

  • 4.1 logging模塊基礎代碼
import logging

logging.debug('-----調試信息[debug]-----')
logging.info('-----有用的信息[info]-----')
logging.warning('-----警告信息[warning]-----')
logging.error('-----錯誤信息[error]-----')
logging.critical('-----嚴重錯誤信息[critical]-----')

由於沒有設置日志級別,默認WARNING級別,上述代碼輸出如下:

WARNING:root:-----警告信息[warning]-----
ERROR:root:-----錯誤信息[error]-----
CRITICAL:root:-----嚴重錯誤信息[critical]-----

Process finished with exit code 0
  • 4.2 自定義日志級別
import logging

logging.basicConfig(level=logging.DEBUG)    #設置日志級別為DEBUG,注意要大寫
logging.debug('-----調試信息[debug]-----')
logging.info('-----有用的信息[info]-----')
logging.warning('-----警告信息[warning]-----')
logging.error('-----錯誤信息[error]-----')
logging.critical('-----嚴重錯誤信息[critical]-----')
  • 4.3 自定義日志顯示格式
import logging

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
logging.debug('-----調試信息[debug]-----')
logging.info('-----有用的信息[info]-----')
logging.warning('-----警告信息[warning]-----')
logging.error('-----錯誤信息[error]-----')
logging.critical('-----嚴重錯誤信息[critical]-----')

其中format是控制日志格式用的,具體格式包含:(ps:讀者可以換到上面代碼部分試試)
%(levelno)s: 打印日志級別的數值
%(levelname)s: 打印日志級別名稱
%(pathname)s: 打印當前執行程序的路徑,其實就是sys.argv[0]
%(filename)s: 打印當前執行程序名
%(funcName)s: 打印日志的當前函數
%(lineno)d: 打印日志的當前行號
%(asctime)s: 打印日志的時間
%(thread)d: 打印線程ID
%(threadName)s: 打印線程名稱
%(process)d: 打印進程ID
%(message)s: 打印日志信息

  • 4.4 自定義日志輸出到文件
import logging

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',
                    filename='test.log')
logging.debug('-----調試信息[debug]-----')
logging.info('-----有用的信息[info]-----')
logging.warning('-----警告信息[warning]-----')
logging.error('-----錯誤信息[error]-----')
logging.critical('-----嚴重錯誤信息[critical]-----')

其中上述代碼中 filename 參數為日志文件配置

小結

  • 如果沒有接觸過日志的朋友使用本篇入門非常不錯
  • 本篇中使用了 basicConfig() 這種方式去配置日志,其實還有多種方式配置(如配置文件配置、自定義logger對象配置等)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM