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

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

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

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

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

項目結構建議

project/
├── config/
│   └── logging.yaml           # 日志配置文件
├── src/
│   ├── __init__.py
│   ├── app/
│   │   ├── __init__.py
│   │   ├── api.py
│   │   └── db.py
│   └── main.py
├── logs/
│   └── app.log                   # 自動創(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 個舊日志文件

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  # 一般不建議設為 false,除非你明確不想傳

說明:

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

2.src/main.py—— 啟動入口配置日志

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)已配置完成!")

# 啟動時調用
if __name__ == "__main__":
    setup_logging()
    logger = logging.getLogger("app")

    logger.info("?? 應用啟動成功!")
    logger.debug("調試信息:初始化完成")

3.src/app/api.py—— 模塊內使用日志

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, 錯誤: %s", user_id, str(e))
        raise

4.requirements.txt

PyYAML>=6.0

輸出效果示例

運行 python src/main.py 輸出:

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

查看 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.模板亮點總結

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

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

相關文章

最新評論

景东| 河东区| 建宁县| 乌鲁木齐市| 浦县| 岳池县| 新龙县| 从江县| 张家界市| 中山市| 辽阳市| 德昌县| 瓦房店市| 巩留县| 湖州市| 桦南县| 阆中市| 巴彦县| 通海县| 怀柔区| 龙里县| 漳平市| 离岛区| 集贤县| 安福县| 铜梁县| 屏东县| 方山县| 丰县| 阜阳市| 金沙县| 科尔| 高邮市| 马山县| 岑巩县| 巴青县| 奇台县| 广宗县| 彩票| 珲春市| 临安市|