最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?日志記錄模塊的綜合指南

 更新時(shí)間:2023年12月26日 11:20:33   作者:簡訊Alfred  
這篇文章主要為大家介紹了Python?日志記錄模塊的綜合指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Python 日志模塊的綜合指南

日志記錄是軟件開發(fā)的一個(gè)重要方面,它允許開發(fā)人員跟蹤和管理應(yīng)用程序的行為。Python 提供了一個(gè)功能強(qiáng)大的日志模塊,可提供靈活和可定制的日志功能。在本文中,我們將深入探討 Python 日志模塊,包括其用法、優(yōu)點(diǎn)和高級(jí)功能。

是什么讓 print 語句變得不倫不類?

print 語句被認(rèn)為不是很 Pythonic,因?yàn)樗鼈兺ǔS糜谂R時(shí)調(diào)試,會(huì)使代碼變得雜亂無章。一旦你調(diào)試完代碼,你就需要返回并刪除所有你寫的 print 語句。相反,Python 鼓勵(lì)使用日志模塊,它可以更好地控制消息、級(jí)別和目的地,同時(shí)有助于保持代碼更整潔、更有條理。

相關(guān)閱讀:Python 的 print 函數(shù)你真的會(huì)用了嗎?

Python 日志級(jí)別

在 Python 的日志模塊中,有多個(gè)日志級(jí)別,每個(gè)級(jí)別都有自己的意義和用例。以下是標(biāo)準(zhǔn)日志級(jí)別及其簡要說明:

• DEBUG:用于診斷問題的詳細(xì)信息,在開發(fā)和調(diào)試過程中使用。

• INFO:確認(rèn)運(yùn)行情況符合預(yù)期;關(guān)于程序執(zhí)行情況的信息。

• WARNING:表示潛在的問題或不一定妨礙程序運(yùn)行的問題。

• ERROR:表示更嚴(yán)重的問題,可能導(dǎo)致程序無法正常運(yùn)行。

• CRITICAL:通常會(huì)導(dǎo)致程序終止的嚴(yán)重錯(cuò)誤;最嚴(yán)重的日志記錄級(jí)別。

開發(fā)人員可以根據(jù)需要定義其他日志記錄級(jí)別,不過現(xiàn)有級(jí)別通常足以應(yīng)對大多數(shù)情況。每個(gè)內(nèi)置日志記錄級(jí)別都有一個(gè)特定的數(shù)值來表示其重要性。

下面是 Python 日志模塊中關(guān)鍵組件和方法的簡化解釋:

Constants:

• Constants(常量)是代表日志級(jí)別的固定值,如 DEBUG、INFOWARNING、ERROR 和 CRITICAL。

Classes(類):

• Logger(記錄器):代表日志記錄通道并負(fù)責(zé)發(fā)出日志信息的對象。

• Handler(處理程序):定義日志信息發(fā)送位置(如控制臺(tái)或文件)的類。

• Filter(過濾器):用于指定應(yīng)根據(jù)特定條件處理哪些日志記錄的類。

Methods(方法):

• logger.info(msg):記錄 INFO 級(jí)別的信息。

• logger.warning(msg):記錄警告級(jí)別的警告信息。

• logger.error(msg):以 ERROR 級(jí)別記錄錯(cuò)誤信息。

• logger.critical(msg):以 CRITICAL 級(jí)別記錄關(guān)鍵信息。

• logger.log(lvl, msg):以自定義整數(shù)日志級(jí)別 (lvl) 記錄一條信息。

• logger.exception(msg):以 ERROR 級(jí)別記錄錯(cuò)誤信息,并包含異常信息。

• logger.setLevel(lvl):設(shè)置此日志記錄器的最小日志級(jí)別(閾值),忽略低于該級(jí)別的消息。

• logger.addFilter(filt):為該日志記錄器添加過濾器,允許對處理的日志記錄進(jìn)行精細(xì)控制。

• logger.removeFilter(filt):從該日志記錄器中刪除特定過濾器。

• logger.filter(record):將日志記錄應(yīng)用日志記錄器的過濾器,如果應(yīng)予以處理,則返回 True,否則返回 False。

• logger.addHandler(hdlr):為該日志記錄器添加日志處理程序(輸出目標(biāo))。

• logger.removeHandler(hdlr):從該日志記錄器中刪除特定日志處理程序。

• logger.hasHandlers():檢查日志記錄器是否有任何已配置的日志處理程序。

這些方法和概念是 Python 日志模塊的基礎(chǔ),可讓您控制日志級(jí)別、過濾器、處理程序等,以便在應(yīng)用程序中有效記錄日志。

常用的處理程序:

除基本處理程序類外,還提供了許多有用的子類。

• StreamHandler:向控制臺(tái)或類文件對象發(fā)送消息。

• FileHandler:向磁盤上的文件發(fā)送信息。

• RotatingFileHandler(旋轉(zhuǎn)文件處理程序 向有大小限制和自動(dòng)文件輪換的文件發(fā)送信息。

• TimedRotatingFileHandler:向基于時(shí)間輪換的文件發(fā)送信息。

• SocketHandler:通過網(wǎng)絡(luò)套接字發(fā)送信息。

• DatagramHandler:通過 UDP 套接字發(fā)送信息。

• SMTPHandler:向電子郵件地址發(fā)送信息。

• SysLogHandler:向系統(tǒng)日志守護(hù)進(jìn)程發(fā)送信息。

• NTEventLogHandler:向 Windows 事件日志發(fā)送消息。

• MemoryHandler:在內(nèi)存中緩沖信息,并根據(jù)標(biāo)準(zhǔn)刷新。

• HTTPHandler:向 HTTP 服務(wù)器發(fā)送信息。

• WatchedFileHandler:監(jiān)控并在日志文件發(fā)生變化時(shí)重新打開日志文件。

• QueueHandler:隊(duì)列處理程序:向隊(duì)列發(fā)送消息。

• NullHandler:忽略錯(cuò)誤信息,對庫開發(fā)人員很有用。

Python 日志基礎(chǔ)知識(shí)

要使用 Python 的日志模塊將事件記錄到文件中,首先要從庫中導(dǎo)入該模塊,而且非常簡單。

通過指定事件記錄的文件名、調(diào)整格式、在追加和寫入模式之間切換、設(shè)置記錄級(jí)別閾值以及從可用選項(xiàng)中自定義屬性來配置記錄器。如示例所示,創(chuàng)建一個(gè)實(shí)例并使用其方法。

記錄變量

這段代碼展示了如何使用 logging.error() 函數(shù)記錄錯(cuò)誤信息,其中包括變量名的空格符 (%s)。

import logging
name = 'Rocky'
logging.error(f'{name} raised an error')

Output:
ERROR:root:Rocky raised an error

記錄所有級(jí)別

該代碼顯示了各級(jí)記錄信息。

# 導(dǎo)入日志模塊
import logging
# 創(chuàng)建并配置日志記錄器
logging.basicConfig(filename="newfile.log",  # 指定日志文件名
                    format='%(asctime)s %(message)s',  # 定義日志信息格式
                    filemode='w')  # 將文件模式設(shè)置為 "w",以便寫入。
# 創(chuàng)建日志記錄器對象
logger = logging.getLogger()
# 設(shè)置日志記錄器的閾值為 DEBUG 級(jí)別
logger.setLevel(logging.DEBUG)
# 記錄不同嚴(yán)重程度的測試信息
logger.debug("A harmless debug message")  # 調(diào)試級(jí)別信息
logger.info("Just providing some information")  # 信息級(jí)消息
logger.warning("This is a warning")  # 警告級(jí)別消息
logger.error("Have you attempted to divide by zero?")  # 錯(cuò)誤級(jí)別信息
logger.critical("The internet connection is down")  # 嚴(yán)重級(jí)別信息
Output:
DEBUG:root:A harmless debug message
INFO:root:Just providing some information
WARNING:root:This is a warning
ERROR:root:Have you attempted to divide by zero?
CRITICAL:root:The internet connection is down

提供日志配置的另一種表示方法。

file name : temp.conf
[loggers]
keys=root,simpleExample
[handlers]
keys=consoleHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

所提供的代碼利用 "temp.conf "配置文件中指定的設(shè)置來初始化日志系統(tǒng)。然后創(chuàng)建一個(gè)名為 "simpleExample "的日志記錄器,并使用一系列日志級(jí)別記錄信息。

import logging
import logging.config
logging.config.fileConfig('temp.conf')
logger = logging.getLogger('simpleExample')
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')
Output:
2023-09-01 13:04:35,581 - simpleExample - DEBUG - debug message
2023-09-01 13:04:35,581 - simpleExample - INFO - info message
2023-09-01 13:04:35,581 - simpleExample - WARNING - warn message
2023-09-01 13:04:35,581 - simpleExample - ERROR - error message
2023-09-01 13:04:35,582 - simpleExample - CRITICAL - critical message

Python 日志異常

在日志記錄過程中使用異常,可以在特定情況下提示應(yīng)用程序中的異常情況或錯(cuò)誤,從而達(dá)到有價(jià)值的目的。當(dāng)異常發(fā)生時(shí),它就像一面紅旗,會(huì)打斷正常的程序流程,并告知調(diào)用者或日志系統(tǒng)所遇到的問題。

import logging
# 配置日志系統(tǒng)
logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s - %(levelname)s - %(message)s')
# 定義對給定值執(zhí)行操作的函數(shù)
def perform_operation(value):
    if value < 0:
        raise ValueError("Invalid value: The value cannot be negative.")
    else:
        logging.info("Operation completed successfully.")
try:
    input_value = int(input("Please input a numerical value: "))
    perform_operation(input_value)
except ValueError as ve:
    logging.exception("An exception occurred: %s", str(ve))
Output:
Please input a numerical value: 
-6
ERROR:root:An exception occurred: Invalid value: The value cannot be negative.
Traceback (most recent call last):
  File "<ipython-input-15-d0b160f9076e>", line 21, in <cell line: 16>
    perform_operation(input_value)
  File "<ipython-input-15-d0b160f9076e>", line 11, in perform_operation
    raise ValueError("Invalid value: The value cannot be negative.")
ValueError: Invalid value: The value cannot be negative.

這樣就可以記錄系統(tǒng)的工作情況,隨后進(jìn)行分析。不過,為了防止文件過大,必須不斷更新文件。

以上就是Python 日志記錄模塊的綜合指南的詳細(xì)內(nèi)容,更多關(guān)于Python 日志記錄模塊的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Django項(xiàng)目連接MongoDB的三種方法

    Django項(xiàng)目連接MongoDB的三種方法

    本文主要介紹了Django項(xiàng)目連接MongoDB的三種方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • opencv python如何實(shí)現(xiàn)圖像二值化

    opencv python如何實(shí)現(xiàn)圖像二值化

    這篇文章主要介紹了opencv python如何實(shí)現(xiàn)圖像二值化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 使用Python生成個(gè)性化的電子郵件簽名

    使用Python生成個(gè)性化的電子郵件簽名

    在數(shù)字通信時(shí)代,電子郵件仍然是商務(wù)溝通和個(gè)人交流的重要工具,本文將詳細(xì)介紹如何使用Python構(gòu)建一個(gè)智能的個(gè)性化電子郵件簽名生成系統(tǒng),希望對大家有所幫助
    2025-11-11
  • Python中find函數(shù)的詳細(xì)使用方法

    Python中find函數(shù)的詳細(xì)使用方法

    在Python中find()函數(shù)用于檢測字符串中是否包含子字符串sub,如果指定start(開始)和end(結(jié)束)范圍,則檢查是否包含在指定范圍內(nèi),這篇文章主要給大家介紹了關(guān)于Python中find函數(shù)的詳細(xì)使用方法,需要的朋友可以參考下
    2023-05-05
  • Python文檔的基本操作指南(從創(chuàng)建到發(fā)布)

    Python文檔的基本操作指南(從創(chuàng)建到發(fā)布)

    在Python開發(fā)過程中,良好的文檔是項(xiàng)目成功的關(guān)鍵因素之一,本文將介紹Python文檔的基本操作,包括文檔字符串(docstring)、幫助函數(shù)、文檔生成工具以及文檔托管等內(nèi)容,幫助開發(fā)者創(chuàng)建專業(yè)級(jí)的項(xiàng)目文檔,需要的朋友可以參考下
    2025-05-05
  • 使用Python3中的gettext模塊翻譯Python源碼以支持多語言

    使用Python3中的gettext模塊翻譯Python源碼以支持多語言

    這篇文章主要介紹了使用Python3中的gettext模塊翻譯Python源碼以支持多語言,其中翻譯Python源碼只是作為示例以展示gettext的功能和用法,需要的朋友可以參考下
    2015-03-03
  • python 實(shí)現(xiàn)交換兩個(gè)列表元素的位置示例

    python 實(shí)現(xiàn)交換兩個(gè)列表元素的位置示例

    今天小編就為大家分享一篇python 實(shí)現(xiàn)交換兩個(gè)列表元素的位置示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 無需壓縮軟件,用python幫你操作壓縮包

    無需壓縮軟件,用python幫你操作壓縮包

    這篇文章主要介紹了如何用python幫你操作壓縮包,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • 淺談python處理json和redis hash的坑

    淺談python處理json和redis hash的坑

    這篇文章主要介紹了淺談python處理json和redis hash的坑,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 詳細(xì)介紹Python函數(shù)中的默認(rèn)參數(shù)

    詳細(xì)介紹Python函數(shù)中的默認(rèn)參數(shù)

    這篇文章主要介紹了詳細(xì)介紹Python函數(shù)中的默認(rèn)參數(shù),包括默認(rèn)參數(shù)的傳遞和求值等內(nèi)容,需要的朋友可以參考下
    2015-03-03

最新評(píng)論

永福县| 华宁县| 信宜市| 开阳县| 景东| 横山县| 澳门| 西乌| 合肥市| 弋阳县| 黔西县| 上饶县| 平顺县| 思南县| 赣榆县| 曲水县| 龙江县| 石渠县| 嘉兴市| 垫江县| 嵊州市| 鹤山市| 镇原县| 天峨县| 家居| 蕉岭县| 达尔| 游戏| 张家界市| 盐池县| 克什克腾旗| 龙里县| 尉犁县| 神池县| 大港区| 恭城| 中西区| 宝应县| 双辽市| 吴桥县| 耿马|