成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用 Logging 模塊實現日志記錄的六個配置技巧

開發
Python 的 logging 模塊是處理日志記錄的強大工具。通過它,你可以輕松記錄程序運行時的信息、警告或錯誤。

一、Logging模塊基礎與日志記錄簡介

Python 的 logging 模塊是處理日志記錄的強大工具。通過它,你可以輕松記錄程序運行時的信息、警告或錯誤。比如,當程序出錯時,日志能幫你快速定位問題。

來看一個簡單的例子:

import logging

# 配置日志
logging.basicConfig(level=logging.DEBUG)

# 記錄一條日志
logging.debug("這是一個調試信息")

運行后,你會在控制臺看到這條日志。這就是 logging 模塊的基本用法!接下來,我們會深入學習更多實用技巧哦~

二、配置日志輸出格式的基礎方法

1. 使用 logging.basicConfig() 設置格式

Python 的 Logging 模塊提供了 basicConfig() 方法,可以快速設置日志的輸出格式。比如,你想讓日志顯示時間、級別和消息,只需要簡單配置!來看個例子:

import logging

# 配置日志輸出格式
logging.basicConfig(
    format="%(asctime)s - %(levelname)s - %(message)s",  # 日志格式
    level=logging.DEBUG  # 日志級別
)

# 輸出日志
logging.debug("這是一個調試信息")

運行后,你會看到類似這樣的輸出:

2023-10-01 14:30:00,000 - DEBUG - 這是一個調試信息

2. 添加自定義內容到日志

如果你想在日志中加入更多細節,比如代碼所在的文件名或行號,也可以輕松實現!只需修改 format 參數即可:

logging.basicConfig(
    format="%(asctime)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s",
    level=logging.INFO
)

logging.info("這是帶有文件名和行號的日志")

輸出結果會包含文件名和行號,方便定位問題:

2023-10-01 14:35:00,000 - INFO - example.py:10 - 這是帶有文件名和行號的日志

通過這些基礎配置,你可以讓日志更加清晰易讀!

三、設置日志級別以控制輸出內容

1. 控制日志輸出的“閥門”

在Python中,Logging模塊提供了多種日志級別(DEBUG、INFO、WARNING、ERROR、CRITICAL)。通過設置不同的日志級別,你可以像調節“閥門”一樣控制哪些日志會被記錄下來。比如,調試時用DEBUG,生產環境用ERROR。

來看個例子:

import logging

# 設置日志級別為ERROR
logging.basicConfig(level=logging.ERROR)
logging.debug("這是調試信息")  # 不會輸出
logging.error("這是一個錯誤!")  # 會輸出

運行后,只會看到錯誤信息。這是因為我們設置了日志級別為ERROR,低于這個級別的日志(如DEBUG)就會被忽略掉。是不是很方便?

四、使用文件處理日志輸出的配置技巧

1. 將日志寫入文件

Logging模塊不僅能將日志打印到控制臺,還能輕松寫入文件。只需要設置FileHandler即可!比如:

import logging

# 創建日志記錄器
logger = logging.getLogger('example_logger')
logger.setLevel(logging.DEBUG)

# 創建文件處理器并設置級別
file_handler = logging.FileHandler('example.log')
file_handler.setLevel(logging.DEBUG)

# 創建格式化器并添加到處理器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

# 將處理器添加到記錄器
logger.addHandler(file_handler)

# 記錄一條日志
logger.debug("This is a debug message.")

運行后,你會在當前目錄下看到一個example.log文件,里面存儲了日志內容。

2. 配置日志文件編碼

默認情況下,Logging模塊可能會使用系統默認編碼(如GBK),這可能導致中文亂碼問題。可以通過設置encoding參數解決:

file_handler = logging.FileHandler('example.log', encoding='utf-8')

這樣就能確保日志文件支持UTF-8編碼,完美兼容中文!

3. 日志文件追加模式

如果不想每次運行程序都覆蓋日志文件,可以設置文件打開模式為追加模式('a'):

file_handler = logging.FileHandler('example.log', mode='a')

這樣,日志會不斷追加到文件末尾,方便長期記錄。

以上就是 Logging 模塊中關于文件日志輸出的一些小技巧,簡單實用!

五、添加時間旋轉功能實現日志輪轉

1. 使用TimedRotatingFileHandler實現日志輪轉

Python的Logging模塊自帶了一個很強大的工具——TimedRotatingFileHandler,它能按時間自動輪轉日志文件。比如每天生成一個新的日志文件,舊的日志會被歸檔。下面是一個簡單的例子:

import logging
from logging.handlers import TimedRotatingFileHandler
import time

# 配置日志輪轉
logger = logging.getLogger("timed_logger")
logger.setLevel(logging.DEBUG)

handler = TimedRotatingFileHandler("app.log", when="midnight", interval=1, backupCount=7)
handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))

logger.addHandler(handler)

# 測試日志記錄
for _ in range(10):
    logger.info("This is a test log.")
    time.sleep(1)

這里我們配置了日志每天凌晨輪轉一次,保留最近7天的日志文件。

這段代碼展示了如何通過TimedRotatingFileHandler來管理日志文件,確保日志不會無限增長,非常適合長期運行的應用程序!

六、實戰案例:為一個小型Web應用配置日志系統

1. 配置日志輸出到控制臺和文件

在Web應用中,同時將日志輸出到控制臺和文件非常實用。通過logging.handlers模塊可以輕松實現:

import logging
from logging.handlers import RotatingFileHandler

logger = logging.getLogger("web_app_logger")
logger.setLevel(logging.DEBUG)

# 控制臺處理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(console_formatter)

# 文件處理器
file_handler = RotatingFileHandler('app.log', maxBytes=1024*1024, backupCount=3)
file_handler.setLevel(logging.DEBUG)
file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(file_formatter)

logger.addHandler(console_handler)
logger.addHandler(file_handler)

這段代碼會將INFO及以上級別的日志打印到控制臺,DEBUG及以上級別的日志保存到文件。

2. 使用時間旋轉功能優化日志管理

為了讓日志文件按天輪轉,我們可以用TimedRotatingFileHandler替代RotatingFileHandler:

from logging.handlers import TimedRotatingFileHandler

time_handler = TimedRotatingFileHandler('app.log', when='midnight', interval=1, backupCount=7)
time_handler.setLevel(logging.DEBUG)
time_handler.setFormatter(file_formatter)

logger.addHandler(time_handler)

這樣每天凌晨生成一個新的日志文件,保留最近7天的日志。

3. 添加異常追蹤信息

在處理錯誤時,記錄完整的堆棧信息非常重要:

try:
    1 / 0
except ZeroDivisionError as e:
    logger.exception("An error occurred: ")

運行后,日志中會包含詳細的異常堆棧信息,方便排查問題。

4. 自定義日志格式

通過調整日志格式,可以讓日志更易讀:

custom_formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')
console_handler.setFormatter(custom_formatter)
file_handler.setFormatter(custom_formatter)

這條格式只顯示時間、級別和消息內容,簡潔明了。

5. 使用JSON格式化日志

對于需要與外部系統集成的場景,JSON格式的日志更加友好:

import json
class JsonFormatter(logging.Formatter):
    def format(self, record):
        log_record = {
            "level": record.levelname,
            "message": super().format(record),
            "timestamp": self.formatTime(record, "%Y-%m-%dT%H:%M:%S")
        }
        return json.dumps(log_record)

json_handler = logging.StreamHandler()
json_handler.setFormatter(JsonFormatter())
logger.addHandler(json_handler)

這段代碼讓日志以JSON格式輸出,便于解析。

6. 配置日志過濾器

有時我們只想記錄特定模塊的日志,可以通過過濾器實現:

class ModuleFilter(logging.Filter):
    def filter(self, record):
        return 'my_module' in record.name

module_filter = ModuleFilter()
file_handler.addFilter(module_filter)

這樣只有來自my_module的日志會被寫入文件。

責任編輯:趙寧寧 來源: 手把手PythonAI編程
相關推薦

2024-03-06 10:50:30

云計算云實例云提供商

2016-12-15 09:53:07

自學編程技巧

2022-04-29 17:03:37

WordPress開發者網站安全

2024-07-15 08:10:57

2023-02-08 17:00:07

IF 語句技巧代碼

2023-10-10 18:24:46

PostgreSQL性能RDBMS

2015-07-30 14:43:04

導航欄iOS開發

2021-10-09 10:00:52

遠程招聘技巧招聘

2025-02-28 13:00:00

JavaScrip開發語言

2023-09-24 13:55:42

Spring應用程序

2017-08-30 19:11:38

Linux命令行tab

2021-01-21 08:00:00

開發工具VS Code

2022-11-30 15:01:11

React技巧代碼

2023-05-05 22:10:05

2011-06-14 16:46:23

SEO

2023-01-29 07:45:06

DevOps

2022-06-28 10:17:23

安全職位首席信息安全官

2010-06-09 18:38:28

UML用例圖

2024-03-12 12:27:00

Vue 3前端開發

2013-09-12 11:40:22

VDI部署VDI
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美午夜一区 | 在线观看成人小视频 | 久久精品一区二区 | 欧美一区二区三区在线播放 | 成人在线中文字幕 | 日韩中文字幕 | 色视频免费 | 欧美精品中文字幕久久二区 | 日韩精品在线看 | 欧洲妇女成人淫片aaa视频 | 国产精品久久久久久久免费大片 | 欧美一区二区视频 | 乱码av午夜噜噜噜噜动漫 | 一区二区三区 在线 | 亚洲a毛片 | 三区在线观看 | www.日本国产| 国产一区视频在线 | 自拍中文字幕 | 午夜精品久久久久久久久久久久 | 日韩二区| 日本一二区视频 | 黄色免费网| 国产日韩一区二区三区 | 在线观看亚洲 | 欧美日韩一区不卡 | 日韩中文字幕一区二区 | 国产一区二区三区免费 | 3级毛片 | 精品欧美一区二区三区 | 免费国产一区二区 | 久草免费在线视频 | 高清视频一区二区三区 | 狠狠干在线| 国产欧美精品一区二区三区 | 四虎永久在线精品免费一区二 | 久久久久久久久久久久久91 | 久99久视频 | 欧美日韩高清 | 国产色婷婷精品综合在线手机播放 | 国产精品国产精品国产专区不片 |