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

Python logging模塊使用示例詳解

 更新時間:2025年05月17日 09:26:15   作者:漫談網(wǎng)絡  
Python 的 logging 模塊是一個靈活且強大的日志記錄工具,廣泛應用于應用程序的調(diào)試、運行監(jiān)控和問題排查,下面給大家介紹Python logging模塊使用指南,感興趣的朋友一起看看吧

Python 的 logging 模塊是一個靈活且強大的日志記錄工具,廣泛應用于應用程序的調(diào)試、運行監(jiān)控和問題排查。它提供了豐富的功能,包括多級日志記錄、多種輸出方式、靈活的格式配置等。以下是詳細介紹:

一、為什么使用 logging 模塊?

  • 替代 printprint 語句僅適合簡單調(diào)試,而 logging 支持持久化、級別控制、異步寫入等。
  • 分級日志:根據(jù)重要性區(qū)分日志(如 DEBUG、INFO、ERROR),便于過濾信息。
  • 靈活輸出:可同時輸出到控制臺、文件、網(wǎng)絡等。
  • 線程安全:適用于多線程/多進程環(huán)境。

二、核心組件

Logger(記錄器)
應用程序直接調(diào)用的接口,負責產(chǎn)生日志。

  • 通過 logging.getLogger(name) 獲取或創(chuàng)建 Logger 實例。
  • 支持層級結構(如 'parent.child' 繼承父級配置)。

Handler(處理器)
決定日志的輸出位置(如控制臺、文件、郵件等)。

  • 常用 Handler:
    • StreamHandler:輸出到流(如控制臺)。
    • FileHandler:輸出到文件。
    • RotatingFileHandler:按大小滾動日志文件。
    • TimedRotatingFileHandler:按時間滾動日志文件。
    • SMTPHandler:發(fā)送郵件。

Filter(過濾器)
提供更細粒度的日志過濾(如僅記錄特定關鍵詞的日志)。

Formatter(格式器)
定義日志的輸出格式(時間、級別、消息等)。

常用格式字段:

'%(asctime)s - %(name)s - %(levelname)s - %(message)s'

三、日志級別

從低到高共 6 個級別(低于設定級別的日志將被忽略):

級別數(shù)值說明
DEBUG10詳細調(diào)試信息
INFO20程序正常運行信息
WARNING30潛在問題,但程序仍運行
ERROR40嚴重錯誤,影響部分功能
CRITICAL50致命錯誤,可能導致程序終止

四、基本使用步驟

創(chuàng)建 Logger

import logging
logger = logging.getLogger(__name__)  # 推薦使用模塊名作為Logger名稱
logger.setLevel(logging.DEBUG)        # 設置記錄的最低級別

配置 Handler 和 Formatter

# 創(chuàng)建控制臺 Handler
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.WARNING)  # 控制臺只輸出 WARNING 及以上級別
# 創(chuàng)建文件 Handler
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)      # 文件記錄所有 DEBUG 及以上級別
# 定義 Formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
# 將 Handler 添加到 Logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)

記錄日志

logger.debug('Debug 信息')
logger.info('程序啟動')
logger.warning('磁盤空間不足')
logger.error('請求超時')

五、快速配置(basicConfig)

適用于簡單場景的快速配置:

import logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('app.log'),
        logging.StreamHandler()
    ]
)
logging.warning('警告信息')

六、高級用法

配置文件或字典
使用 logging.config 模塊通過文件或字典配置:

import logging.config
config = {
    'version': 1,
    'formatters': {
        'default': {'format': '%(asctime)s - %(levelname)s - %(message)s'}
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'default',
            'level': 'DEBUG'
        }
    },
    'root': {
        'handlers': ['console'],
        'level': 'INFO'
    }
}
logging.config.dictConfig(config)

捕獲異常信息
使用 logger.exception 記錄異常堆棧:

try:
    1 / 0
except Exception:
    logger.exception('發(fā)生異常:')

日志傳播
子 Logger 默認將日志傳遞給父 Logger??赏ㄟ^ logger.propagate = False 關閉。

七、常見問題

重復日志
原因:多次添加 Handler 或 basicConfig 被多次調(diào)用。
解決:確保 Handler 只添加一次,或在 basicConfig 中設置 force=True。

性能優(yōu)化
避免在高頻代碼中記錄低級別日志(如 DEBUG),可預先檢查級別:

if logger.isEnabledFor(logging.DEBUG):
    logger.debug(f'耗時操作: {time_consuming()}')

八、總結

logging 模塊通過靈活的配置和分級機制,滿足了從簡單到復雜的日志需求。掌握其核心組件(Logger、Handler、Formatter)和級別控制,能顯著提升程序的可維護性。建議在項目中替代 print,合理利用日志進行調(diào)試和監(jiān)控。

到此這篇關于Python logging模塊使用示例詳解的文章就介紹到這了,更多相關Python logging模塊使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

仪征市| 西昌市| 桦甸市| 冷水江市| 文安县| 乐业县| 额尔古纳市| 石河子市| 石楼县| 措美县| 和顺县| 芜湖县| 昭觉县| 新昌县| 德兴市| 上虞市| 汕尾市| 绥化市| 元阳县| 浙江省| 勐海县| 会东县| 沁阳市| 乐昌市| 塔河县| 五指山市| 海门市| 汝南县| 化州市| 台东县| 重庆市| 石楼县| 定日县| 会昌县| 望奎县| 安宁市| 阜新| 逊克县| 民乐县| 轮台县| 九龙坡区|