python-log日志

LOG

1. 日志相關(guān)概念

  • 日志
  • 日志的級別
    • 不同的用戶關(guān)注不同的程序信息
    • DEBUG
    • INFO
    • NOTICE
    • WARNING
    • ERROR
    • CRITICAL
    • ALERT
    • EMERGENCY
  • IO操作-->不要頻繁操作
  • LOG的作用
    • 調(diào)試
    • 了解軟件的運行情況
    • 分析定位問題
  • 日志信息
    • time
    • 地點
    • level
    • 內(nèi)容
  • 成熟的第三方日志
    • log4j
    • log4php
    • logging

2. logging模塊

  • 日志級別
    • 級別可以自定義
    • DEBUG
    • INFO
    • WARNING
    • ERROR
    • CRITICAL
  • 初始化/寫日志實例需要指定級別, 只有當級別等于或者高于指定的級別才被記錄
  • 使用方式
    • 直接使用logging(封裝了其他組件)

2.1 logging模塊級別的日志

  • 使用以下幾個函數(shù):

    • logging.debug(msg, *args, **kwargs) 創(chuàng)建一條級別為DEBUG的日志記錄
    • logging.info(msg, *args, **kwargs) 創(chuàng)建一條級別為INFO的日志記錄
    • logging.warning(msg, *args, **kwargs) 創(chuàng)建一條級別為WARNING的日志記錄
    • logging.error(msg, *args, **kwargs) 創(chuàng)建一條級別為ERROR的日志記錄
    • logging.critical(msg, *args, **kwargs) 創(chuàng)建一條級別為CRITICAL的日志記錄
    • logging.log(level, *args, **kwargs) 自定義創(chuàng)建一條level級別的日志記錄
    • logging.basicConfig(**kwargs) 對root logger進行一次性配置
  • logging.basicConfig(**kwargs) 對root logger進行一次性配置

    • 只在第一次調(diào)用時起作用
    • 不配置logger則使用默認值
      • 輸出: sys.stderr
      • 級別: WARNING
      • 格式: level:log_name:content
  • 案例01,,format的參數(shù)自行查詢

  •  import logging
     LOG_FORMAT = "%(asctime)s=====%(levelname)s+++++%(message)s"
     logging.basicConfig(filename="test_log.log", level=logging.DEBUG, format=LOG_FORMAT)
     logging.debug("This is a debug log.")
     logging.info("This is a info log.")
     logging.warning("This is a warning log.")
     logging.error("This is a error log.")
     logging.critical("This is a critical log.")
     # 另一種寫法
     logging.log(logging.DEBUG, "This is a debug log.")
     logging.log(logging.INFO, "This is a info log.")
     logging.log(logging.WARNING, "This is a warning log.")
     logging.log(logging.ERROR, "This is a error log.")
     logging.log(logging.CRITICAL, "This is a critical log.")
    

2.2 logging模塊的處理流程

  • 四大組件
    • 日志器(logger): 產(chǎn)生日志的一個接口
    • 處理器(Handler): 把產(chǎn)生的日志發(fā)送到相應(yīng)的目的地
    • 過濾器(Filter): 更精細的控制那些日志輸出
    • 格式器(Formatter): 對輸出信息進行格式化
  • logger
    • 產(chǎn)生一個日志
    • 操作
    •   Logger.setLevel()   # 設(shè)置日志器將會處理的日志消息的最低級別
        Logger.addHandel() 和 Logger.removeHandler()     # 為該logger對象添加和移除一個Handler對象
        Logger.addFilter() 和 logger.removeFilter()      # 為該logger對象添加和移除一個Filter對象
        Logger.debug:   #產(chǎn)生一條debug級別的日志,同理info,error等
        logger.exception():     # 創(chuàng)建蕾仕于Logger.error的日志消息
        Logger.log():   # 或取一個明確的日志level參數(shù)類創(chuàng)建一個日志記錄
      
    • 如何得到一個logger對象
      • 實例化
      • logger.getLogger()
  • Handler
    • 把log發(fā)送到指定位置
    • 方法
      • setLevel
      • setFormat
      • addFilter, removeFilter
    • 不需要直接使用,Handler是基類
    •   logging.StreamHandler   # 將日志消息發(fā)送輸出到Stream,如std.out,std.err或任何file-like對象
        logging.FileHandler     # 將日志消息發(fā)送到磁盤文件,默認情況下文件大小會無限增長
        logging.handlers.RotatingFileHandler    # 將日志消息發(fā)送到磁盤文件,并支持按文件大小切割
        logging.handlers.TimedRotatingFileHandler   # 按文件時間切割
        logging.handlers.HTTPHandler    # 將日志消息以GET或POST的方式發(fā)送給一個HTTP服務(wù)器
        logging.handlers.SMTPHandler    # 將日志消息發(fā)送給一個指定的email地址
        logging.NullHandler     #該Handler實例會忽略error messages,通常被想使用logging的library
      
  • Format類
    • 直接實例化
    • 可以繼承Format添加特殊內(nèi)容
    • 三個參數(shù)
      • fmt:
      • datefmt:
      • style:
  • Filter類
    • 可以被Handler和Logger使用
    • 控制傳遞過來的信息的具體內(nèi)容
    • 案例02
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容