欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

Python 日志模塊的綜合指南

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

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

print 語句被認為不是很 Pythonic,因為它們通常用于臨時調(diào)試,會使代碼變得雜亂無章。一旦你調(diào)試完代碼,你就需要返回并刪除所有你寫的 print 語句。相反,Python 鼓勵使用日志模塊,它可以更好地控制消息、級別和目的地,同時有助于保持代碼更整潔、更有條理。

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

Python 日志級別

在 Python 的日志模塊中,有多個日志級別,每個級別都有自己的意義和用例。以下是標準日志級別及其簡要說明:

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

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

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

• ERROR:表示更嚴重的問題,可能導致程序無法正常運行。

• CRITICAL:通常會導致程序終止的嚴重錯誤;最嚴重的日志記錄級別。

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

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

Constants:

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

Classes(類):

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

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

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

Methods(方法):

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

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

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

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

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

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

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

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

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

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

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

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

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

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

常用的處理程序:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Python 日志基礎知識

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

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

記錄變量

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

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

Output:
ERROR:root:Rocky raised an error

記錄所有級別

該代碼顯示了各級記錄信息。

# 導入日志模塊
import logging
# 創(chuàng)建并配置日志記錄器
logging.basicConfig(filename="newfile.log",  # 指定日志文件名
                    format='%(asctime)s %(message)s',  # 定義日志信息格式
                    filemode='w')  # 將文件模式設置為 "w",以便寫入。
# 創(chuàng)建日志記錄器對象
logger = logging.getLogger()
# 設置日志記錄器的閾值為 DEBUG 級別
logger.setLevel(logging.DEBUG)
# 記錄不同嚴重程度的測試信息
logger.debug("A harmless debug message")  # 調(diào)試級別信息
logger.info("Just providing some information")  # 信息級消息
logger.warning("This is a warning")  # 警告級別消息
logger.error("Have you attempted to divide by zero?")  # 錯誤級別信息
logger.critical("The internet connection is down")  # 嚴重級別信息
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 "配置文件中指定的設置來初始化日志系統(tǒng)。然后創(chuàng)建一個名為 "simpleExample "的日志記錄器,并使用一系列日志級別記錄信息。

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 日志異常

在日志記錄過程中使用異常,可以在特定情況下提示應用程序中的異常情況或錯誤,從而達到有價值的目的。當異常發(fā)生時,它就像一面紅旗,會打斷正常的程序流程,并告知調(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)的工作情況,隨后進行分析。不過,為了防止文件過大,必須不斷更新文件。

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

相關(guān)文章

  • Django JSonResponse對象的實現(xiàn)

    Django JSonResponse對象的實現(xiàn)

    本文主要介紹了Django JSonResponse對象的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Python命令啟動Web服務器實例詳解

    Python命令啟動Web服務器實例詳解

    這篇文章主要介紹了Python命令啟動Web服務器實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • python技巧分享Excel創(chuàng)建和修改

    python技巧分享Excel創(chuàng)建和修改

    這篇文章主要介紹了python技巧分享Excel創(chuàng)建和修改,openpyxl是一個讀寫Excel文檔的Python庫,能夠同時讀取和修改Excel文檔。下面來看下文詳細介紹,需要的小伙伴可以參考一下
    2022-02-02
  • Pytorch實現(xiàn)將模型的所有參數(shù)的梯度清0

    Pytorch實現(xiàn)將模型的所有參數(shù)的梯度清0

    這篇文章主要介紹了Pytorch實現(xiàn)將模型的所有參數(shù)的梯度清0,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python?Conda安裝包報錯:PackagesNotFoundError兩種解決方法

    Python?Conda安裝包報錯:PackagesNotFoundError兩種解決方法

    這篇文章主要給大家介紹了關(guān)于Python?Conda安裝包報錯:PackagesNotFoundError的兩種解決方法,這通常意味著安裝程序正在尋找的環(huán)境包沒有在 conda 的默認通道中找到,文中將解決的辦法介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • Python上級目錄文件導入的幾種方法(from.import)

    Python上級目錄文件導入的幾種方法(from.import)

    有時候我們可能需要import另一個路徑下的python文件,下面這篇文章主要給大家介紹了關(guān)于Python上級目錄文件導入的幾種方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • python數(shù)據(jù)分析必會的Pandas技巧匯總

    python數(shù)據(jù)分析必會的Pandas技巧匯總

    用Python做數(shù)據(jù)分析光是掌握numpy和matplotlib可不夠,numpy雖然能夠幫我們處理處理數(shù)值型數(shù)據(jù),但很多時候,還有字符串,還有時間序列等,比如:我們通過爬蟲獲取到了存儲在數(shù)據(jù)庫中的數(shù)據(jù),一些Pandas必會的用法,讓你的數(shù)據(jù)分析水平更上一層樓
    2021-08-08
  • python 制作磁力搜索工具

    python 制作磁力搜索工具

    這篇文章主要介紹了如何用python 制作磁力搜索工具,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • python爬蟲學習筆記--BeautifulSoup4庫的使用詳解

    python爬蟲學習筆記--BeautifulSoup4庫的使用詳解

    這篇文章主要介紹了Python中使用Beautiful Soup庫的超詳細教程,示例代碼基于Python2.x版本,極力推薦!需要的朋友可以參考下
    2021-08-08
  • 詳解pandas安裝若干異常及解決方案總結(jié)

    詳解pandas安裝若干異常及解決方案總結(jié)

    這篇文章主要介紹了詳解pandas安裝若干異常及解決方案總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01

最新評論