| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import os
- import logging
- from logging.handlers import TimedRotatingFileHandler
- # ===============================
- # 基本配置
- # ===============================
- LOG_DIR = os.path.join(os.path.dirname(__file__), "../../logs")
- os.makedirs(LOG_DIR, exist_ok=True)
- LOG_FILE = os.path.join(LOG_DIR, "app.log")
- # ===============================
- # 日志格式
- # ===============================
- LOG_FORMAT = "[%(asctime)s] [%(levelname)s] [%(name)s] [%(filename)s:%(lineno)d] - %(message)s"
- DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
- # ===============================
- # 主 logger 实例
- # ===============================
- logger = logging.getLogger("app")
- logger.setLevel(logging.INFO) # 可改为 DEBUG
- # 防止重复添加 handler
- if not logger.handlers:
- # 控制台输出
- console_handler = logging.StreamHandler()
- console_handler.setLevel(logging.INFO)
- console_handler.setFormatter(logging.Formatter(LOG_FORMAT, DATE_FORMAT))
- # 文件输出(每天切割)
- file_handler = TimedRotatingFileHandler(
- LOG_FILE, when="midnight", interval=1, backupCount=7, encoding="utf-8"
- )
- file_handler.setLevel(logging.INFO)
- file_handler.setFormatter(logging.Formatter(LOG_FORMAT, DATE_FORMAT))
- # 添加到 logger
- logger.addHandler(console_handler)
- logger.addHandler(file_handler)
- # 避免重复日志
- logger.propagate = False
|