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

Python logging模塊使用示例詳解

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

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

一、為什么使用 logging 模塊?

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

二、核心組件

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

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

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

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

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

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

常用格式字段:

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

三、日志級(jí)別

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

級(jí)別數(shù)值說(shuō)明
DEBUG10詳細(xì)調(diào)試信息
INFO20程序正常運(yùn)行信息
WARNING30潛在問(wèn)題,但程序仍運(yùn)行
ERROR40嚴(yán)重錯(cuò)誤,影響部分功能
CRITICAL50致命錯(cuò)誤,可能導(dǎo)致程序終止

四、基本使用步驟

創(chuàng)建 Logger

import logging
logger = logging.getLogger(__name__)  # 推薦使用模塊名作為L(zhǎng)ogger名稱
logger.setLevel(logging.DEBUG)        # 設(shè)置記錄的最低級(jí)別

配置 Handler 和 Formatter

# 創(chuàng)建控制臺(tái) Handler
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.WARNING)  # 控制臺(tái)只輸出 WARNING 及以上級(jí)別
# 創(chuàng)建文件 Handler
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)      # 文件記錄所有 DEBUG 及以上級(jí)別
# 定義 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('程序啟動(dòng)')
logger.warning('磁盤空間不足')
logger.error('請(qǐng)求超時(shí)')

五、快速配置(basicConfig)

適用于簡(jiǎn)單場(chǎng)景的快速配置:

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

六、高級(jí)用法

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

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 默認(rèn)將日志傳遞給父 Logger??赏ㄟ^(guò) logger.propagate = False 關(guān)閉。

七、常見問(wèn)題

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

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

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

八、總結(jié)

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

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

相關(guān)文章

最新評(píng)論

龙川县| 宣汉县| 峨边| 新建县| 黄石市| 神木县| 和硕县| 陆河县| 徐水县| 镇平县| 洛隆县| 朝阳市| 克山县| 奉贤区| 莲花县| 张家口市| 唐河县| 武胜县| 滕州市| 扶沟县| 张家界市| 普安县| 防城港市| 柘城县| 抚顺市| 大田县| 赤城县| 章丘市| 商都县| 雷州市| 堆龙德庆县| 方正县| 惠州市| 河北区| 宿松县| 贵阳市| 杭锦旗| 克什克腾旗| 肇东市| 乐业县| 东兰县|