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

深入詳解Python日志配置模板的全攻略

 更新時(shí)間:2026年03月03日 08:48:44   作者:哆啦de夢  
這篇文章主要為大家詳細(xì)介紹了Python一個(gè)完整項(xiàng)目日志配置模板,包括YAML配置,?Python加載腳本和使用示例,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

下面是一個(gè) 完整項(xiàng)目日志配置模板(含 YAML 配置 + Python 加載腳本 + 使用示例),支持:

  • 多 handler(控制臺 + 文件)
  • 統(tǒng)一日志格式
  • 模塊化 logger
  • propagate=True,日志可傳遞
  • 支持日志輪轉(zhuǎn)(按大?。?/li>
  • 可熱重載(通過 dictConfig

項(xiàng)目結(jié)構(gòu)建議

project/
├── config/
│   └── logging.yaml           # 日志配置文件
├── src/
│   ├── __init__.py
│   ├── app/
│   │   ├── __init__.py
│   │   ├── api.py
│   │   └── db.py
│   └── main.py
├── logs/
│   └── app.log                   # 自動(dòng)創(chuàng)建
└── requirements.txt

1.config/logging.yaml

version: 1

formatters:
  standard:
    format: "%(asctime)s | %(name)s | %(levelname)s | %(funcName)s:%(lineno)d | %(message)s"
    datefmt: "%Y-%m-%d %H:%M:%S"

  simple:
    format: "%(name)s | %(levelname)s | %(message)s"

handlers:
  console:
    class: logging.StreamHandler
    level: INFO
    formatter: simple
    stream: ext://sys.stderr

  file:
    class: logging.handlers.RotatingFileHandler
    level: DEBUG
    formatter: standard
    filename: logs/app.log
    maxBytes: 10485760  # 10MB
    backupCount: 5      # 保留 5 個(gè)舊日志文件

loggers:
  app:
    level: DEBUG
    handlers: [console, file]
    propagate: true  # 重要:讓日志傳給 root

  app.api:
    level: DEBUG
    handlers: [console, file]
    propagate: true

  app.db:
    level: DEBUG
    handlers: [console, file]
    propagate: true

  app.utils:
    level: INFO
    handlers: [console, file]
    propagate: true

root:
  level: DEBUG
  handlers: [console, file]
  propagate: false  # 一般不建議設(shè)為 false,除非你明確不想傳

說明:

  • RotatingFileHandler 自動(dòng)輪轉(zhuǎn)日志,避免文件過大
  • propagate: true 確保子 logger 日志能傳給 root
  • rootpropagate: false 是為了防止日志無限循環(huán)(安全做法)

2.src/main.py—— 啟動(dòng)入口配置日志

import logging.config
import yaml
import os

# 確保 logs 目錄存在
os.makedirs("logs", exist_ok=True)

# 加載 YAML 配置
def setup_logging(config_path="config/logging.yaml"):
    with open(config_path, "r", encoding="utf-8") as f:
        config = yaml.safe_load(f)
    logging.config.dictConfig(config)
    print("? 日志系統(tǒng)已配置完成!")

# 啟動(dòng)時(shí)調(diào)用
if __name__ == "__main__":
    setup_logging()
    logger = logging.getLogger("app")

    logger.info("?? 應(yīng)用啟動(dòng)成功!")
    logger.debug("調(diào)試信息:初始化完成")

3.src/app/api.py—— 模塊內(nèi)使用日志

import logging

logger = logging.getLogger("app.api")  # 模塊化命名

def get_user(user_id: int):
    logger.debug("開始查詢用戶,user_id=%d", user_id)
    try:
        # 模擬數(shù)據(jù)庫查詢
        user = {"id": user_id, "name": "張三"}
        logger.info("成功查詢用戶: %s", user)
        return user
    except Exception as e:
        logger.error("查詢用戶失敗,user_id=%d, 錯(cuò)誤: %s", user_id, str(e))
        raise

4.requirements.txt

PyYAML>=6.0

輸出效果示例

運(yùn)行 python src/main.py 輸出:

? 日志系統(tǒng)已配置完成!
2026-02-06 15:10:22 | app | INFO | __main__:<module> | ?? 應(yīng)用啟動(dòng)成功!

查看 logs/app.log

2026-02-06 15:10:22 | app.api | DEBUG | get_user:10 | 開始查詢用戶,user_id=123
2026-02-06 15:10:22 | app.api | INFO | get_user:13 | 成功查詢用戶: {'id': 123, 'name': '張三'}

5.模板亮點(diǎn)總結(jié)

亮點(diǎn)說明
一個(gè) root + 多子 logger模塊清晰,便于追蹤
YAML 配置,可讀性強(qiáng)易于維護(hù)、團(tuán)隊(duì)協(xié)作
日志輪轉(zhuǎn)(10MB)防止日志文件過大
統(tǒng)一日志格式便于 ELK/Sentry 等工具解析
僅配置一次,全局生效安全,無重復(fù) handler
支持 loguru 的平滑遷移如后續(xù)改用 loguru,只需替換 logging 調(diào)用即可

到此這篇關(guān)于深入詳解Python日志配置模板的全攻略的文章就介紹到這了,更多相關(guān)Python日志配置模板內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

巴塘县| 石台县| 江山市| 宁海县| 邢台县| 桐城市| 达日县| 临安市| 鹰潭市| 桑日县| 湟源县| 台湾省| 焉耆| 察隅县| 桦甸市| 江华| 德惠市| 金塔县| 图片| 中阳县| 康乐县| 三门峡市| 甘洛县| 平湖市| 中卫市| 那曲县| 云霄县| 阿拉尔市| 宽甸| 临城县| 金阳县| 玉田县| 保靖县| 东乌| 南宁市| 台中县| 阳曲县| 咸宁市| 淮南市| 乌鲁木齐县| 襄樊市|