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

Python中的Logging模塊在項目應用小結

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

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

一、基本使用

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

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.')

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

接下來,我們在代碼中使用了不同級別的日志記錄方法,如debug、info、warning、error和critical。這些方法會根據(jù)配置的日志級別來決定是否記錄消息。

二、高級配置

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

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

python
import logging  
# 創(chuàng)建一個日志記錄器  
logger = logging.getLogger('my_logger')  
logger.setLevel(logging.DEBUG)  
# 創(chuàng)建一個控制臺處理器,將日志輸出到控制臺  
console_handler = logging.StreamHandler()  
console_handler.setLevel(logging.INFO)  
# 創(chuàng)建一個文件處理器,將日志輸出到文件  
file_handler = logging.FileHandler('example.log')  
file_handler.setLevel(logging.DEBUG)  
# 創(chuàng)建一個格式化器,定義日志消息的格式  
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.')

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

三、日志模塊結構

在這里插入圖片描述

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

四、項目中應用

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

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中項目的名稱
        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")

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

相關文章

最新評論