【logging】日志模块使用示例

  • 适用:接口自动化、Web 项目,同时输出控制台 + 日志文件,自动轮转,utf8 防止中文乱码,可直接复制进项目。
# 目录结构
project/
├── logs/          # 日志文件夹
└── common/
    └── logger.py  # 日志封装模块
  • 1、common/logger.py
import logging
import os
from logging.handlers import RotatingFileHandler

def get_logger(name="project"):
    # 1. 创建logger对象
    logger = logging.getLogger(name)
    logger.setLevel(logging.DEBUG)
    # 防止重复添加handler,重复打印日志
    if logger.handlers:
        return logger

    # 2. 日志保存路径,自动创建logs文件夹
    log_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), "logs")
    if not os.path.exists(log_dir):
        os.mkdir(log_dir)
    log_file = os.path.join(log_dir, "app.log")

    # 3. 定义日志格式
    log_format = logging.Formatter(
        "%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S"
    )

    # 4. 文件handler:单个文件最大5MB,最多保留3个备份
    file_handler = RotatingFileHandler(
        log_file,
        maxBytes=5 * 1024 * 1024,
        backupCount=3,
        encoding="utf-8"
    )
    file_handler.setLevel(logging.INFO)
    file_handler.setFormatter(log_format)

    # 5. 控制台handler
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.DEBUG)
    console_handler.setFormatter(log_format)

    # 6. 挂载handler
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)
    return logger

# 全局logger实例,项目直接导入使用
log = get_logger("auto_test")
  • 2、在业务 / 测试脚本里使用(main.py)
from common.logger import log

def query_user_info(user_id):
    log.info(f"开始查询用户,user_id={user_id}")
    try:
        # 模拟接口请求
        res = {"code": 300, "data": {"name": "test"}}
        log.debug(f"接口返回原始数据:{res}")
        if res["code"] != 200:
            log.warning(f"接口返回非200,响应:{res}")
        return res
    except Exception as e:
        log.error(f"查询用户接口异常:{str(e)}", exc_info=True) # exc_info=True 打印堆栈
        return None

if __name__ == "__main__":
    log.info("===== 项目启动 =====")
    query_user_info(10086)
    log.info("===== 执行结束 =====")
posted @ 2026-09-23 16:09  Tony_xiao  阅读(9)  评论(0)    收藏  举报