首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Tornado 日誌按日期輪轉配置:TimedRotatingFileHandler 整合與 Tornado 內建 Logger 協調

     編輯:更多程式設計知識

生產環境日誌需按日期歸檔管理。Python logging.handlers.TimedRotatingFileHandler 支援多種時間維度輪轉,但直接套用官方配置會導致 Tornado 內建 Logger 失效。本文提供完整 YAML 配置方案,確保根 Logger 與 Tornado Logger 共用輪轉處理器。

logging.yaml 完整配置


# logging.yaml
version: 1
disable_existing_loggers: false

formatters:
  simple:
    format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'

loggers:
  all:
    handlers: [all]
    propagate: false
  tornado:
    handlers: [all]
    propagate: false

handlers:
  console:
    class: logging.StreamHandler
    level: INFO
    formatter: simple
    stream: ext://sys.stdout
  all:
    class: logging.handlers.TimedRotatingFileHandler
    level: INFO
    formatter: simple
    when: midnight
    filename: ./logs/server.log

root:
  level: INFO
  handlers: [console, all]
  propagate: true

關鍵配置解析

配置項作用
disable_existing_loggers: false保留現有 Logger(關鍵!預設 true 會關閉 Tornado Logger)
loggers.tornado明確指定 tornado Logger 使用同一處理器
propagate: false避免重複傳遞至 root 造成雙重記錄
when: midnight每日午夜 00:00 輪轉(而非啟動後 24 小時)
filename基礎日誌檔名,輪轉後自動加後綴 (如 server.log.2024-01-15)

應用程式啟動載入


import logging.config
import yaml

logging.config.dictConfig(yaml.load(open('logging.yaml', 'r')))

when 參數選項

值輪轉週期說明
S秒高頻除錯用
M分
H時
D天從啟動時間起算 24 小時
midnight每日午夜推薦生產環境
W0-W6每週0=週一

CentOS 依賴安裝


sudo yum install python-yaml

驗證輪轉效果


ls -la logs/
# server.log          (當前)
# server.log.2024-01-15
# server.log.2024-01-14
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved