| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # -*- coding: utf-8 -*-
- # @Time : 2024/5/16
- # @Author : 魏志亮
- import logging
- import logging.handlers
- import os
- # 日志配置函数化,避免全局副作用
- def setup_logger(log_path: str = "/data/logs"):
- logger = logging.getLogger(__name__)
- logger.setLevel(logging.DEBUG)
- # 避免重复添加handler
- if logger.handlers:
- return logger
- os.makedirs(log_path, exist_ok=True)
- # 1. 创建并配置TimedRotatingFileHandler(所有级别的文件输出)
- all_log_handler = logging.handlers.TimedRotatingFileHandler(
- os.path.join(log_path, "info.log"), 'D', backupCount=90
- )
- # 2. 创建并配置ERROR级别的TimedRotatingFileHandler
- error_log_handler = logging.handlers.TimedRotatingFileHandler(
- os.path.join(log_path, "error.log"), 'D', backupCount=90
- )
- error_log_handler.setLevel(logging.ERROR)
- # 3. 创建并配置StreamHandler(控制台输出)
- console_handler = logging.StreamHandler()
- console_handler.setLevel(logging.INFO)
- # 定义日志格式
- fmt = logging.Formatter(
- "%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s",
- "%Y-%m-%d %H:%M:%S"
- )
- # 设置各个handler的格式
- all_log_handler.setFormatter(fmt)
- error_log_handler.setFormatter(fmt)
- console_handler.setFormatter(fmt)
- # 添加handler
- logger.addHandler(all_log_handler)
- logger.addHandler(error_log_handler)
- logger.addHandler(console_handler)
- return logger
- logger = setup_logger("/home/trans/project/logs/")
|