日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python_logging模块

發布時間:2025/7/14 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python_logging模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

日志:方便用戶了解系統、軟件或應用的運行情況,及時發現問題并快速定位、解決問題。

一個日志信息對應的是一個事件的發生,而一個事件需要包括的幾個內容:

  • 事件發生時間
  • 事件發生位置
  • 事件發生嚴重程度(日志級別)
  • 事件內容

還可以包括其他信息如:ID,進程名稱,線程ID,線程名稱等

logging模塊日志等級(日志等級依次升高,日志信息量依次減少):

  • DEBUG: 最詳細的日志信息,典型應用場景為:問題診斷(開發應用程序或部署開發環境時)
  • INFO:信息詳細程度僅次于DEBUG,通常只記錄關鍵節點信息,用于確認一切都是按照我們預期那樣的進行工作(開發應用程序或部署開發環境時)
  • WARNING:當某些不期望的事情發生時記錄的信息(如,磁盤可用空間較低)此時應用程序在正常運行(應用上線或部署生產環境時)
  • ERROR:由于發生一個更嚴重的問題導致某些功能不能正常運行時記錄的信息(應用上線或部署生產環境時)
  • CRITICAL:當發生嚴重錯誤,導致應用程序不能繼續運行時記錄的信息(應用上線或部署生產環境時)
  • 注:logging模塊中,程序指定一個日志級別后,應用程序只會記錄并輸出大于或者等于該指定日志級別的日志信息,小于該等級的日志記錄將會被丟棄

    ?1.logging模塊定義的模塊級別的常用函數

    logging.debug(msg,*args,**kwargs)創建一條嚴重級別為DEBUG的日志記錄
    logging.info(msg,*args,**kwargs)創建一條嚴重級別為INFO的日志記錄
    logging.warning(msg,*args,**kwargs)創建一條嚴重級別為WARNING的日志記錄
    logging.error(msg,*args,**kwargs)創建一條嚴重級別為ERROR的日志記錄
    logging.critical(msg,*args,**kwargs)創建一條嚴重級別為CRITICAL的日志記錄
    logging.log(level,*args,**kwargs)創建一條嚴重級別為level的日志記錄
    logging.basicConfig(**kwargs)對“要記錄的日志級別”、“日志格式”、“日志輸出位置”、“日志文件打開模式”等信息進行一次性配置 ? ? ? ? ? ? ?

    注:日志記錄函數只打印級別比日志器設置的級別高的日志記錄,而比日志器設置的級別低的日志記錄將會被丟棄

    其中,logging.debug(),logging.info()等方法的定義中,**kwargs參數支持3個關鍵字參數

    exc_info: ?布爾值,若為True,則會將異常信息添加到日志消息中,如果沒有異常信息則添加None到日志信息中
    stack_info: ?布爾值, 默認為False,若為True,棧信息將會被添加到日志信息中
    extra: ?字典(dict)參數,用于自定義消息格式中所包含的字段,但它的key不能和logging模塊定義的字段沖突

    ?logging.basicConfig()函數

    ?可接收的關鍵字參數:

    filename指定日志輸出目標文件的文件名,指定該設置項后日志信息不會被輸出到控制臺
    filemode指定日志文件的打開模式,默認為“a”,注:只有filename指定時該選項才有效
    format指定日志輸出時所包含的字段信息以及它們的順序,即指定日志格式字符串
    datefmt指定日期/時間格式,注:只有format中包含時間字段%(asctime)時該選項才有效
    level指定日志器的日志級別
    stream指定日志輸出目標流,如sys.stdout等,注:stream和filename不能同時提供,否則會報錯
    style指定format格式字符串的風格,可取值為‘%’、‘{’和‘$’,默認為‘%’
    dandlers指定該選項,則創建多個Headler的可迭代對象,都將會被添加到根日志下,注:filename、stream和handlers只能存在一個

    注:logging.basecConfig()只有第一次調用該函數才會起作用,

    實例:

    logging.basicConfig(filename='example.log', level=logging.INFO, format='%(asctime)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S') # basicConfig()對打印的日志信息進行一次性配置 logging.debug("debug ") logging.info("info ") logging.warning("waring ") example 2018-10-13 17:22:52 info 2018-10-13 17:22:52 waring result

    ?2.logging模塊相關類

    1>.logger類:日志器,提供了應用程序可一直使用的接口

    常用的配置方法:

    Logger.setLevel()設置日志器將會處理的日志消息的最低嚴重級別,小于設置的最低嚴重級別的級別消息將會被丟棄
    Logger.addHandler() 和 Logger.removeHandler()為該Logger對象添加 和 移除一個Handler對象
    Logger.addFilter() 和 Logger.removeFilter()為該Logger對象添加 和 移除一個Filter對象

    配置完成后,創建日志記錄的方法:

    Logger.debug(), Logger.info(), Logger.warning(),

    Logger.error(), Logger.critical()

    創建一個與它們的方法名對應級別的日志記錄
    Logger.exception()創建一個類似與Logger.error()的日志消息,但它將會多輸出堆棧追蹤信息,通常只是在exception handler中調用該方法
    Logger.log()需要獲取一個明確的日志level參數來創建一個日志記錄

    其中,logging.getLogger()方法有一個可選參數name,該參數表示將要返回的日志器的名稱標識,如果不提供該參數,則其值默認為root,若以相同的name參數多次調用getLogger方法,將會返回指向同一個logger對象的引用

    2>.Handler類:處理器,將logger創建的日志記錄發送到合適的目的輸出

    相關配置方法:(內建handler對象)

    Handler.setLevel()設置handler將會處理的日志消息的最低嚴重級別
    Handler.setFormatter()為handler設置一個格式器對象
    Handler.addFilter() 和 Handler.removeFilter()為handler添加 和 刪除一個過濾器對象

    常用的Handler接口:

    logging.StreamHandler將日志消息發送到輸出到Stream(流),如std.out,std.err或任何file-like對象
    logging.FileHandler將日志消息發送到磁盤文件,默認情況下文件大小會無限增長
    logging.handlers.RotatingFileHandler將日志消息發送到磁盤文件,并支持日志文件按大小切割
    logging.handlers.HTTPHandler將日志消息以GET或POST的方式發送給一個HTTP服務器
    logging.handlers.SMTPHandler將日志消息發送給一個指定的email地址
    logging.NullHandler該Handler實例會忽略error messages通常被想使用logging的library開發者使用來避免“No handlers could be found for logger XXX”信息出現

    3>.Filter類:過濾器,提供了更細粒度的控制工具來決定輸出那一條日志記錄,丟棄那一條日志記錄

    logging.Filter(name=‘ ’):若name的值為空字符串,則允許所有的日志事件通過過濾

    filter(record):用于具體控制傳遞的record記錄是否能通過過濾,返回值為0表示不能通過過濾,返回值非零表示可以通過過濾

    ?注:在filter()方法內部改變record可以添加、刪除或修改一些屬性

    ?4>.Formatter 類:格式器,決定日志記錄的最終輸出格式

    Formatter類的構造方法:

    logging.Formatter.__init__(fmt=None,datefmt=None,style="%")
    • fmt: 指定消息格式化字符串,如果不指定該參數則默認使用message的原始值
    • datefmt:指定日期格式字符串,如果不指定該參數則默認使用“%Y-%m-%d %H: %M: %S”  
    • ?style:可取值為‘%’,‘{’和‘$’,如果不指定默認使用‘%’

    實例:把日志同時打印到屏幕和文件里

    import logginglogger = logging.getLogger('Test_log') # 生成logger對象 logger.setLevel(logging.DEBUG) # 這里的debug為全局的控制級別,優先級最高 ch = logging.StreamHandler() # 屏幕輸出 ch.setLevel(logging.DEBUG) # 級別為debug,注釋了也打印debug級別,因為全局的為debug fh = logging.FileHandler('text.log') # 把日志寫在文件里 fh.setLevel(logging.WARNING) # 級別為warning formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')ch.setFormatter(formatter) # 把格式賦給屏幕 fh.setFormatter(formatter) # 把格式賦給文件 logger.addHandler(ch) logger.addHandler(fh)logger.debug('debug message') logger.info('info message') logger.warn('warn message') logger.error('error message') logger.critical('critical message') example 2018-10-13 17:41:14,159-Test_log-DEBUG-debug message 2018-10-13 17:41:14,159-Test_log-INFO-info message 2018-10-13 17:41:14,159-Test_log-WARNING-warn message 2018-10-13 17:41:14,159-Test_log-ERROR-error message 2018-10-13 17:41:14,159-Test_log-CRITICAL-critical message 屏幕結果 2018-10-13 17:41:40,072-Test_log-WARNING-warn message 2018-10-13 17:41:40,072-Test_log-ERROR-error message 2018-10-13 17:41:40,072-Test_log-CRITICAL-critical message 文件里結果

    3.logging模塊定義的字符串字段(在format格式字符串中的字段)

    屬性名使用格式?
    asctime%(asctime)s日志事件發生的時間,如:2018-10-13 17:46:45
    create%(created)f日志事件發生的時間--時間戳
    relativeCreated%(relativeCreated)d日志事件發生的時間相對與logging模塊加載時間的相對毫秒數
    msecs%(msecs)d日志事件發生時間的毫秒部分
    levelname%(levelname)s該日志記錄的文字形式的日子級別
    levelno%(levelno)s該日志記錄的數字形式
    name%(name)s所使用的日志器名稱,默認為root,因為默認使用的是rootLogger
    message%(message)s日志記錄的文本內容(用戶輸出的消息),通過 msg%args 計算得到
    pathname%(pathname)s調用日志輸出函數(記錄函數)的模塊的完整路徑名,可能沒有
    filename%(filename)s調用日志輸出函數(記錄函數)的模塊的文件名,包含文件后綴
    module%(module)s調用日志輸出函數(記錄函數)的模塊名
    funcName%(funcName)s調用日志輸出函數(記錄函數)的函數名
    lineno%(lineno)s調用日志輸出函數(記錄函數)的語句所在的代碼行號
    process%(process)d進程ID
    processName%(processName)s進程名稱,Python3.1新增
    thread%(thread)d線程ID
    threadName%(thread)s線程名稱

    ?

    ?

    ?

    ?

    參考筆記:https://www.cnblogs.com/yyds/p/6901864.html

    轉載于:https://www.cnblogs.com/Vera-y/p/9786649.html

    總結

    以上是生活随笔為你收集整理的Python_logging模块的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲熟妇国产熟妇肥婆 | 精品亚洲在线 | 欧美一区影院 | 日本老太婆做爰视频 | 日韩一区二区三区在线看 | 婷婷综合网站 | 日韩成人免费在线观看 | 久久艹国产精品 | 亚洲 欧美 综合 | 日韩不卡av | 有机z中国电影免费观看 | 河北彩花av在线播放 | 在线永久看片免费的视频 | 精品亚洲一区二区三区四区五区高 | 91亚洲精品久久久蜜桃 | 国产丝袜网站 | www.日韩 | 国产一区二区视频免费在线观看 | 成人在线视频在线观看 | 天天干天天插 | 男女www| 天堂在线精品视频 | 黄av网| 国产成人一区二区三区 | 亚洲美女色 | 特黄老太婆aa毛毛片 | av日韩高清 | 久久中文精品 | 日韩欧美一区二区在线 | av无码精品一区二区三区宅噜噜 | 欧美丰满艳妇bbwbbw | 精品欧美黑人一区二区三区 | 免费av一区二区三区 | 亚洲成年人影院 | 亚洲理论中文字幕 | 边啃奶头边躁狠狠躁 | 肉色丝袜小早川怜子av | 欧美丰满熟妇xxxx | 中文字幕在线一区二区三区 | 中文字幕第五页 | 综合网中文字幕 | 青青草老司机 | 九九操 | 久国产 | 成人性做爰aaa片免费看不忠 | 中国免费一级片 | 你懂的av在线 | 亚洲精品国产精品乱码 | 欧美高清x| 色香色香欲天天天影视综合网 | 蜜臀av夜夜澡人人爽人人 | 欧美成人va | 国产美女免费视频 | 精品国产一二区 | 99久久香蕉 | 波多野结衣一区二 | 色午夜 | 美女被娇喘视频 | 亚洲欧美综合自拍 | 成人爽a毛片一区二区 | 96在线观看 | 2022国产精品| 黄色网av | 国产一区二区三区四区hd | 熟妇五十路六十路息与子 | 精品国产一区二区三区四区 | 午夜黄色录像 | 欧美黄色aaa | 爱情岛论坛永久入址在线 | 午夜性色福利视频 | 国产成人精品午夜福利Av免费 | 亚洲一区二区乱码 | 亚洲插 | 在线久久| 大地资源二中文在线影视免费观看 | 亚洲人成电影一区二区在线 | 国产精品精品国产 | 欧美日韩中文国产 | 日韩成人精品一区二区 | 日韩福利电影在线 | 一区二区三区视频在线观看免费 | 可以在线观看的av | 日韩av在线观看免费 | 快灬快灬一下爽69 | 激情三区 | 公侵犯人妻中文字慕一区二区 | 91青青草视频 | 在线免费一区 | 最好看的中文字幕国语电影mv | 久久国产激情视频 | 日韩av电影手机在线观看 | 伊人国产在线 | 天堂新版8中文在线8 | 日韩永久免费视频 | 美女精品网站 | 日韩中文字幕高清 | 久久午夜伦理 | 日本不卡一区视频 | 麻豆91精品91久久久 |