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

Python中的Logging模塊在項(xiàng)目應(yīng)用小結(jié)

 更新時(shí)間:2024年04月22日 09:22:10   作者:平時(shí)不搬磚  
Python標(biāo)準(zhǔn)庫中的logging模塊為我們提供了強(qiáng)大而靈活的日志記錄功能,本文將介紹如何使用logging模塊,并探討其在Python開發(fā)中的實(shí)際應(yīng)用,感興趣的朋友一起看看吧

在Python編程中,日志記錄(Logging)是一項(xiàng)至關(guān)重要的任務(wù),它幫助我們跟蹤代碼的運(yùn)行狀態(tài)、識(shí)別錯(cuò)誤以及優(yōu)化程序性能。Python標(biāo)準(zhǔn)庫中的logging模塊為我們提供了強(qiáng)大而靈活的日志記錄功能。本文將介紹如何使用logging模塊,并探討其在Python開發(fā)中的實(shí)際應(yīng)用。

一、基本使用

首先,我們需要導(dǎo)入logging模塊,并配置基本的日志記錄器(Logger)。以下是一個(gè)簡(jiǎn)單的示例:

python
import logging  
# 配置日志記錄器  
logging.basicConfig(level=logging.DEBUG,  
                    format='%(asctime)s - %(levelname)s - %(message)s',  
                    filename='example.log',  
                    filemode='w')  
# 在代碼中使用日志記錄器  
logging.debug('This is a debug message.')  
logging.info('This is an info message.')  
logging.warning('This is a warning message.')  
logging.error('This is an error message.')  
logging.critical('This is a critical message.')

在這個(gè)示例中,我們首先通過basicConfig方法配置了日志記錄器。level參數(shù)用于設(shè)置日志級(jí)別,這里我們?cè)O(shè)置為DEBUG,意味著所有級(jí)別的日志都會(huì)被記錄。format參數(shù)用于定義日志消息的格式,包括時(shí)間戳、日志級(jí)別和消息內(nèi)容。filename參數(shù)指定了日志文件的名稱,filemode參數(shù)用于設(shè)置文件的打開模式。

接下來,我們?cè)诖a中使用了不同級(jí)別的日志記錄方法,如debug、info、warning、error和critical。這些方法會(huì)根據(jù)配置的日志級(jí)別來決定是否記錄消息。

二、高級(jí)配置

除了基本配置外,logging模塊還支持更高級(jí)的配置選項(xiàng),以滿足復(fù)雜的日志記錄需求。例如,我們可以創(chuàng)建多個(gè)日志記錄器,為每個(gè)記錄器設(shè)置不同的處理器(Handler)和格式化器(Formatter)。

以下是一個(gè)更復(fù)雜的示例,展示了如何創(chuàng)建多個(gè)日志記錄器,并將日志輸出到控制臺(tái)和文件:

python
import logging  
# 創(chuàng)建一個(gè)日志記錄器  
logger = logging.getLogger('my_logger')  
logger.setLevel(logging.DEBUG)  
# 創(chuàng)建一個(gè)控制臺(tái)處理器,將日志輸出到控制臺(tái)  
console_handler = logging.StreamHandler()  
console_handler.setLevel(logging.INFO)  
# 創(chuàng)建一個(gè)文件處理器,將日志輸出到文件  
file_handler = logging.FileHandler('example.log')  
file_handler.setLevel(logging.DEBUG)  
# 創(chuàng)建一個(gè)格式化器,定義日志消息的格式  
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  
# 將格式化器添加到處理器中  
console_handler.setFormatter(formatter)  
file_handler.setFormatter(formatter)  
# 將處理器添加到記錄器中  
logger.addHandler(console_handler)  
logger.addHandler(file_handler)  
# 在代碼中使用日志記錄器  
logger.debug('This is a debug message.')  
logger.info('This is an info message.')  
logger.warning('This is a warning message.')  
logger.error('This is an error message.')  
logger.critical('This is a critical message.')

在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)名為my_logger的日志記錄器,并設(shè)置了日志級(jí)別為DEBUG。然后,我們創(chuàng)建了一個(gè)控制臺(tái)處理器和一個(gè)文件處理器,并分別為它們?cè)O(shè)置了日志級(jí)別和格式化器。最后,我們將這兩個(gè)處理器添加到了記錄器中。這樣,當(dāng)我們使用logger對(duì)象記錄日志時(shí),消息會(huì)同時(shí)輸出到控制臺(tái)和文件中。

三、日志模塊結(jié)構(gòu)

在這里插入圖片描述

組件名稱對(duì)應(yīng)的類對(duì)應(yīng)描述
日志記錄器Logger提供了應(yīng)用程序的日志記錄功能
處理器Handler提供日志的一條處理方式
過濾器Filter提供了更細(xì)顆粒的控制工具來決定輸出日志的記錄
格式化器Formmtter提供日志的格式

四、項(xiàng)目中應(yīng)用

如下的代碼為django項(xiàng)目中使用日志記錄模塊的示例

import os
import logging
import sys
from django.conf import settings
from datetime import datetime
os.makedirs(settings.LOGS, exist_ok=True)
class Logger:
    _instance = None
    def __init__(self):
        self.format = '%(asctime)s %(thread)d %(threadName)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'
        # django中項(xiàng)目的名稱
        self.logger = logging.getLogger(settings.PROJECTNAME)
        self.logger.setLevel(logging.DEBUG)
        self.add_stream_handle()
        self.file = os.path.join(settings.LOGS, f'{datetime.now().strftime("%Y%m%d_%H%M%S")}.log')
        self.add_file_handle(self.file)
    def add_stream_handle(self):
        handler = logging.StreamHandler(sys.stdout)
        handler.setLevel(level=logging.INFO)
        handler.setFormatter(logging.Formatter(self.format))
        self.logger.addHandler(handler)
    def add_file_handle(self, file):
        handler = logging.FileHandler(file, encoding="utf-8")
        handler.setLevel(level=logging.DEBUG)
        handler.setFormatter(logging.Formatter(self.format))
        self.logger.addHandler(handler)
    @classmethod
    def get_logger(cls):
    	# 初始化一次,通常__init__.py文件中調(diào)用
        if cls._instance is None:
            cls._instance = Logger().logger
        return cls._instance
Logger.get_logger()
# 其他模塊中使用
import logging
from django.conf import settings
logger = logging.getLogger(settings.PROJECTNAME)
logger.info("INFO")
logger.warning("WARNING")
logger.error("ERROR")

到此這篇關(guān)于Python中的Logging模塊在項(xiàng)目應(yīng)用小結(jié)的文章就介紹到這了,更多相關(guān)Python Logging模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用OpenCV對(duì)運(yùn)動(dòng)員的姿勢(shì)進(jìn)行檢測(cè)功能實(shí)現(xiàn)

    使用OpenCV對(duì)運(yùn)動(dòng)員的姿勢(shì)進(jìn)行檢測(cè)功能實(shí)現(xiàn)

    2022年奧林匹克運(yùn)動(dòng)會(huì)如期舉行,以不正確的方式進(jìn)行運(yùn)動(dòng)風(fēng)險(xiǎn)在增加,人體姿勢(shì)估計(jì)是計(jì)算機(jī)視覺領(lǐng)域的重要問題,接下來通過本文給大家介紹下使用OpenCV對(duì)運(yùn)動(dòng)員的姿勢(shì)進(jìn)行檢測(cè)功能,感興趣的朋友一起看看吧
    2022-02-02
  • 編寫Python腳本來獲取mp3文件tag信息的教程

    編寫Python腳本來獲取mp3文件tag信息的教程

    這篇文章主要介紹了編寫Python腳本來獲取mp3文件tag信息的教程,代碼基于Python2.x,文中的注釋很詳細(xì),需要的朋友可以參考下
    2015-05-05
  • Python imageio讀取視頻并進(jìn)行編解碼詳解

    Python imageio讀取視頻并進(jìn)行編解碼詳解

    今天小編就為大家分享一篇Python imageio讀取視頻并進(jìn)行編解碼詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python代碼實(shí)現(xiàn)PDF與TIFF互轉(zhuǎn)

    Python代碼實(shí)現(xiàn)PDF與TIFF互轉(zhuǎn)

    在本指南中,我們將深入探討如何借助Spire.PDF for Python和Pillow(PIL)庫的強(qiáng)大功能,在Python將PDF與TIFF這兩種格式進(jìn)行互相轉(zhuǎn)換,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-05-05
  • Python激活A(yù)naconda環(huán)境變量的詳細(xì)步驟

    Python激活A(yù)naconda環(huán)境變量的詳細(xì)步驟

    今天給大家分享Python激活A(yù)naconda環(huán)境變量的詳細(xì)步驟,激活A(yù)naconda環(huán)境變量分為簡(jiǎn)潔版和詳細(xì)版,簡(jiǎn)潔版只需要通過輸入命令進(jìn)行配置即可,詳細(xì)版本文通過圖文步驟給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-06-06
  • Python+Selenium實(shí)現(xiàn)在Geoserver批量發(fā)布Mongo矢量數(shù)據(jù)

    Python+Selenium實(shí)現(xiàn)在Geoserver批量發(fā)布Mongo矢量數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了如何利用Python+Selenium實(shí)現(xiàn)在 Geoserver批量發(fā)布來自Mongo中的矢量數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-07-07
  • java關(guān)于string最常出現(xiàn)的面試題整理

    java關(guān)于string最常出現(xiàn)的面試題整理

    在本篇文章里小編給大家整理的是一篇關(guān)于java關(guān)于string最常出現(xiàn)的面試題整理內(nèi)容,有興趣的朋友們可以參考下。
    2021-01-01
  • python學(xué)習(xí)實(shí)操案例(四)

    python學(xué)習(xí)實(shí)操案例(四)

    這篇文章主要介紹了python學(xué)習(xí)實(shí)操案例,這一篇小編給大家?guī)淼氖橇斜?,所以這里是和列表有關(guān)的案例,需要的小伙伴可以參考一下,希望對(duì)你有所幫助<BR>
    2022-02-02
  • Python代碼注釋規(guī)范代碼實(shí)例解析

    Python代碼注釋規(guī)范代碼實(shí)例解析

    這篇文章主要介紹了Python代碼注釋規(guī)范代碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Pandas中Replace函數(shù)使用那些事兒

    Pandas中Replace函數(shù)使用那些事兒

    Pandas是基于NumPy?的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的,下面這篇文章主要給大家介紹了關(guān)于Pandas中Replace函數(shù)使用那些事兒,文中通過實(shí)例代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11

最新評(píng)論

老河口市| 大宁县| 泾川县| 晋江市| 大竹县| 黄陵县| 南投市| 丰镇市| 岱山县| 茌平县| 哈尔滨市| 灵宝市| 莱阳市| 尤溪县| 苏尼特右旗| 白朗县| 循化| 应用必备| 奈曼旗| 阿克苏市| 共和县| 城口县| 呼玛县| 同心县| 贵溪市| 汽车| 永宁县| 砀山县| 宣威市| 滁州市| 长武县| 龙泉市| 德格县| 尚志市| 石阡县| 襄汾县| 红原县| 中西区| 江都市| 双牌县| 札达县|