You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python日志配置问题:自定义日志文件名与来源标识

解决方案

1. 重构公共日志模块 logger.py

不再提前初始化全局日志实例,而是提供一个动态初始化函数,让主脚本指定日志文件名;同时日志格式中加入模块名字段,用来区分日志来源。

import logging
from logging.handlers import RotatingFileHandler

def setup_logger(log_filename):
    # 配置日志格式,%(name)s会自动填充当前logger的名称(即模块标识)
    log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
    formatter = logging.Formatter(log_format)

    # 获取根logger并配置级别
    root_logger = logging.getLogger()
    root_logger.setLevel(logging.INFO)

    # 移除默认控制台handler,避免重复输出
    for handler in root_logger.handlers[:]:
        root_logger.removeHandler(handler)

    # 添加文件handler,使用主脚本指定的文件名
    file_handler = RotatingFileHandler(log_filename, maxBytes=10*1024*1024, backupCount=5)
    file_handler.setFormatter(formatter)
    root_logger.addHandler(file_handler)

    # 可选:添加控制台输出handler
    console_handler = logging.StreamHandler()
    console_handler.setFormatter(formatter)
    root_logger.addHandler(console_handler)

2. 修改主脚本 data.py

在脚本开头调用logger.setup_logger传入自定义日志文件名,然后为当前模块创建专属logger,手动指定标识为DATA(也可以用__name__,默认是__main__)。

import logging
import logger
import login

# 主脚本指定日志文件名
logger.setup_logger("data_script.log")

# 获取当前模块的logger,指定来源标识为DATA
data_logger = logging.getLogger("DATA")

def main():
    data_logger.info("主脚本data.py开始执行")
    login.do_login()
    data_logger.info("主脚本data.py执行完毕")

if __name__ == "__main__":
    main()

3. 修改公共模块 login.py

直接为当前模块创建专属logger,指定来源标识为LOGIN,日志会自动带上该标识。

import logging

# 获取当前模块的logger,指定来源标识为LOGIN
login_logger = logging.getLogger("LOGIN")

def do_login():
    login_logger.info("开始执行登录操作")
    # 登录逻辑代码...
    login_logger.info("登录操作执行完成")

关键说明

  • 每个模块通过logging.getLogger("自定义标识")创建专属logger,日志格式中的%(name)s会自动替换为这个标识,实现来源区分。
  • logger.py的setup_logger函数只需在主脚本中调用一次,所有模块的日志都会统一使用该配置(包括文件名、格式)。
  • 其他主脚本(如report.py)只需在开头调用logger.setup_logger("report_script.log"),即可生成独立日志文件,同时各模块日志来源保持正确。

内容的提问来源于stack exchange,提问作者acr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:07:12