亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python日志模塊logging案例詳解

 更新時間:2024年01月23日 09:15:46   作者:黑砂  
日志模塊主要用于輸出運行日志,可以設(shè)置輸出日志的等級、日志保存路徑、日志文件回滾等,這篇文章主要介紹了python日志模塊logging,需要的朋友可以參考下

日志模塊主要用于輸出運行日志,可以設(shè)置輸出日志的等級、日志保存路徑、日志文件回滾等

一、優(yōu)勢

可以通過設(shè)置不同的日志等級,在release版本中只輸出重要信息,而不必顯示大量的調(diào)試信息;
print將所有信息都輸出到標準輸出中,嚴重影響開發(fā)者從標準輸出中查看其它數(shù)據(jù);logging則可以由開發(fā)者決定將信息輸出到什么地方,以及怎么輸出。

二、等級(level)

開發(fā)應(yīng)用程序或部署開發(fā)環(huán)境時,可以使用DEBUG或INFO級別的日志獲取盡可能詳細的日志信息來進行開發(fā)或部署調(diào)試
應(yīng)用上線或部署生產(chǎn)環(huán)境時,應(yīng)該使用WARNING或ERROR或CRITICAL級別的日志來降低機器的I/O壓力和提高獲取錯誤日志信息的效率。日志級別的指定通常都是在應(yīng)用程序的配置文件中進行指定的。
分級

日志等級:DEBUG < INFO < WARNING < ERROR <CRITICAL

  • DEBUG 最詳細的日志信息,典型應(yīng)用場景是 問題診斷
  • INFO 信息詳細程度僅次于DEBUG,通常只記錄關(guān)鍵節(jié)點信息,用于確認一切都是按照我們預(yù)期的那樣進行工作
  • WARNING 當某些不期望的事情發(fā)生時記錄的信息(如,磁盤可用空間較低),但是此時應(yīng)用程序還是正常運行的
  • ERROR 由于一個更嚴重的問題導致某些功能不能正常運行時記錄的信息
  • CRITICAL 當發(fā)生嚴重錯誤,導致應(yīng)用程序不能繼續(xù)運行時記錄的信息

三、使用方式

1.使用logging提供的模塊級別的函數(shù)

創(chuàng)建一條日志記錄

  • 創(chuàng)建一條嚴重級別為DEBUG的日志記錄 logging.debug(msg, *args, **kwargs)
  • 創(chuàng)建一條嚴重級別為INFO的日志記錄 logging.info(msg, *args, **kwargs)
  • 創(chuàng)建一條嚴重級別為WARNING 的日志記錄 logging.warning(msg, *args, **kwargs)
  • 創(chuàng)建一條嚴重級別為ERROR的日志記錄 logging.error(msg, *args, **kwargs)
  • 創(chuàng)建一條嚴重級別為CRITICAL的日志記錄 logging.critical(msg, *args, **kwargs)
  • 創(chuàng)建一條嚴重級別為level的日志記錄 logging.log(level, *args, **kwargs)
例:
import logging
logging.debug("debug_msg")
logging.info("info_msg")
logging.warning("warning_msg")
logging.error("error_msg")
logging.critical("critical_msg") 

默認情況下logging模塊將日志打印到只顯示了大于等于WARNING級別的日志,這說明默認的日志級別設(shè)置為WARNING(日志級別等級CRITICAL > ERROR > WARNING > INFO > DEBUG)

默認的日志格式為日志級別:Logger名稱:用戶輸出消息

2.對root logger進行一次性配置

logging.basicConfig(**kwargs) 

logging.basicConfig(**kwargs)函數(shù) 用于指定“要記錄的日志級別”、“日志格式”、“日志輸出位置”、“日志文件的打開模式”等信息,其他幾個都是用于記錄各個級別日志的函數(shù)。
用默認日志格式(Formatter)為日志系統(tǒng)建立一個默認的流處理器(StreamHandler),設(shè)置基礎(chǔ)配置(如日志級別等)并加到root logger(根Logger)中)

logging.basicConfig()函數(shù)參數(shù)說明

  • filename 指定日志輸出目標文件的文件名(可以寫文件名也可以寫文件的完整的絕對路徑,寫文件名日志放執(zhí)行文件目錄下,寫完整路徑按照完整路徑生成日志文件),指定該設(shè)置項后日志信心就不會被輸出到控制臺了
  • filemode 指定日志文件的打開模式,默認為’a’。需要注意的是,該選項要在filename指定時才有效
  • format 指定日志格式字符串,即指定日志輸出時所包含的字段信息以及它們的順序。logging模塊定義的格式字段下面會列出。
  • datefmt 指定日期/時間格式。需要注意的是,該選項要在format中包含時間字段%(asctime)s時才有效
  • level 指定日志器的日志級別
  • stream 指定日志輸出目標stream,如sys.stdout、sys.stderr以及網(wǎng)絡(luò)stream。需要說明的是,stream和filename不能同時提供,否則會引發(fā) ValueError異常
  • style Python 3.2中新添加的配置項。指定format格式字符串的風格,可取值為’%‘、’{‘和’$‘,默認為’%’
  • handlers Python3.3中新添加的配置項。該選項如果被指定,它應(yīng)該是一個創(chuàng)建了多個Handler的可迭代對象,這些handler將會被添加到root logger。需要說明的是:filename、stream和handlers這三個配置項只能有一個存在,不能同時出現(xiàn)2個或3個,否則會引發(fā)ValueError異常。
例
import logging
logging.basicConfig(level=logging.DEBUG,
                    format="%(asctime)s %(name)s %(levelname)s %(message)s",
                    datefmt = '%Y-%m-%d  %H:%M:%S %a'   
                    ) #注意月份和天數(shù)不要搞亂了,這里的格式化符與time模塊相同
logging.debug("msg1")
logging.info("msg2")
logging.warning("msg3")
logging.error("msg4")
logging.critical("msg5") 
結(jié)果:
2023-03-01  23:37:49 Wed root DEBUG msg1
2023-03-01  23:37:49 Wed root INFO msg2
2023-03-01  23:37:49 Wed root WARNING msg3
2023-03-01  23:37:49 Wed root ERROR msg4
2023-03-01  23:37:49 Wed root CRITICAL msg5 

四、日志流處理流程(使用Logging日志系統(tǒng)的四大組件)

日志器(logger)是入口,真正干活兒的是處理器(handler),處理器(handler)還可以通過過濾器(filter)和格式器(formatter)對要輸出的日志內(nèi)容做過濾和格式化等處理操作。

1.日志器-Logger

提供了應(yīng)用程序可一直使用的接口
功能
1)向應(yīng)用程序代碼暴露幾個方法,使應(yīng)用程序可以在運行時記錄日志消息;
2)基于日志嚴重等級(默認的過濾設(shè)施)或filter對象來決定要對哪些日志進行后續(xù)處理;
3)將日志消息傳送給所有感興趣的日志handlers。
Logger對象最常用的方法分為兩類:配置方法 和 消息發(fā)送方法

配置方法
Logger.setLevel() 設(shè)置日志器將會處理的日志消息的最低嚴重級別
Logger.addHandler() 和 Logger.removeHandler() 為該logger對象添加 和 移除一個handler對象
Logger.addFilter() 和 Logger.removeFilter() 為該logger對象添加 和 移除一個filter對象

創(chuàng)建日志記錄

創(chuàng)建一個與它們的方法名對應(yīng)等級的日志記錄
Logger.debug(), Logger.info(), Logger.warning(), Logger.error(), Logger.critical()

創(chuàng)建一個類似于Logger.error()的日志消息
Logger.exception()

需要獲取一個明確的日志level參數(shù)來創(chuàng)建一個日志記錄
Logger.log()

2.處理器 -Handler

將logger創(chuàng)建的日志記錄分發(fā)到handler指定的位置(文件、網(wǎng)絡(luò)、郵件等)。

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

說明
Handler.setLevel(lel):指定被處理的信息級別,低于lel級別的信息將被忽略
Handler.setFormatter():給這個handler選擇一個格式
Handler.addFilter(filt)、Handler.removeFilter(filt):新增或刪除一個filter對象

3.過濾器 -Filter

提供了更細粒度的控制工具來決定輸出哪條日志記錄,丟棄哪條日志記錄
Filter是一個過濾器基類,它只允許某個logger層級下的日志事件通過過濾
定義
class logging.Filter(name=‘’)
filter(record)

4.格式器 Formatter

配置日志信息的最終順序、結(jié)構(gòu)和內(nèi)容。
Formatter類的構(gòu)造方法

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

5.日志流處理簡要流

  • 1、創(chuàng)建一個logger
  • 2、設(shè)置下logger的日志的等級
  • 3、創(chuàng)建合適的Handler(FileHandler要有路徑)
  • 4、設(shè)置下每個Handler的日志等級
  • 5、創(chuàng)建下日志的格式
  • 6、向Handler中添加上面創(chuàng)建的格式
  • 7、將上面創(chuàng)建的Handler添加到logger中
  • 8、打印輸出logger.debug\logger.info\logger.warning\logger.error\logger.critical

6.實例

import logging
# 創(chuàng)建日志器對象
logger = logging.getLogger(__name__)
# 設(shè)置logger可輸出日志級別范圍
logger.setLevel(logging.DEBUG)
# 添加控制臺handler,用于輸出日志到控制臺
console_handler = logging.StreamHandler()
# 添加日志文件handler,用于輸出日志到文件中
file_handler = logging.FileHandler(filename='log.log', encoding='UTF-8')
# 將handler添加到日志器中
logger.addHandler(console_handler)
logger.addHandler(file_handler)
# 設(shè)置格式并賦予handler
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
# 輸出不同級別日志
logger.debug("============【開始測試】====================")
logger.info("============【開始測試】====================")
logger.warning("============【開始測試】====================")
logger.critical("============【開始測試】====================")
logger.error("============【開始測試】====================")
結(jié)果為:
2023-03-18 02:32:46,316 - __main__ - DEBUG - ============【開始測試】====================
2023-03-18 02:32:46,316 - __main__ - INFO - ============【開始測試】====================
2023-03-18 02:32:46,316 - __main__ - WARNING - ============【開始測試】====================
2023-03-18 02:32:46,316 - __main__ - CRITICAL - ============【開始測試】====================
2023-03-18 02:32:46,316 - __main__ - ERROR - ============【開始測試】====================

到此這篇關(guān)于python日志模塊logging的文章就介紹到這了,更多相關(guān)python日志模塊logging內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用Turtle庫繪制動態(tài)鐘表

    python使用Turtle庫繪制動態(tài)鐘表

    這篇文章主要為大家詳細介紹了python使用Turtle庫繪制動態(tài)鐘表,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • pandas解決空列表問題

    pandas解決空列表問題

    本文主要介紹了Python的pandas庫中高效處理空列表的問題,包括識別、過濾、替換和聚合操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • 詳解pandas刪除缺失數(shù)據(jù)(pd.dropna()方法)

    詳解pandas刪除缺失數(shù)據(jù)(pd.dropna()方法)

    這篇文章主要介紹了pandas刪除缺失數(shù)據(jù)(pd.dropna()方法),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • python requests response值判斷方式

    python requests response值判斷方式

    這篇文章主要介紹了python requests response值判斷方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • pandas按若干個列的組合條件篩選數(shù)據(jù)的方法

    pandas按若干個列的組合條件篩選數(shù)據(jù)的方法

    下面小編就為大家分享一篇pandas按若干個列的組合條件篩選數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python?PaddleNLP開源實現(xiàn)快遞單信息抽取

    Python?PaddleNLP開源實現(xiàn)快遞單信息抽取

    這篇文章主要為大家介紹了Python?PaddleNLP開源項目實現(xiàn)對快遞單信息抽取,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Django異步任務(wù)線程池實現(xiàn)原理

    Django異步任務(wù)線程池實現(xiàn)原理

    這篇文章主要介紹了Django異步任務(wù)線程池實現(xiàn)原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • django 實現(xiàn)celery動態(tài)設(shè)置周期任務(wù)執(zhí)行時間

    django 實現(xiàn)celery動態(tài)設(shè)置周期任務(wù)執(zhí)行時間

    今天小編就為大家分享一篇django 實現(xiàn)celery動態(tài)設(shè)置周期任務(wù)執(zhí)行時間,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python 余弦相似度與皮爾遜相關(guān)系數(shù) 計算實例

    Python 余弦相似度與皮爾遜相關(guān)系數(shù) 計算實例

    今天小編就為大家分享一篇Python 余弦相似度與皮爾遜相關(guān)系數(shù) 計算實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python練習之曾經(jīng)很火的小人畫愛心表白代碼

    python練習之曾經(jīng)很火的小人畫愛心表白代碼

    小編有個好兄弟最近在追妹子,跟妹子打得火熱!就差臨門一腳了,這一jio我?guī)兔ρa上去了!他問有沒有什么酷炫的表白方式,可以給人心動的趕jio,表白的方式有許多種今天小編來教大家一個之前很火的小人畫愛心表白代碼
    2021-09-09

最新評論