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

Flask蓝图日志模块名显示异常,如何指定自定义日志模块名?

解决Flask Blueprint钩子日志模块名显示问题

我来帮你搞定这个问题!其实原因很简单:你的log_incoming_request钩子函数是定义在flask_api_blueprint.py这个模块里的,当你调用myLoggerFile.getLogger()时,默认会把当前模块的名字(也就是flask_api_blueprint)作为logger的标识,所以日志里才会显示这个名字。要让它显示flask_api_example,试试下面这几种方法:

方法一:直接指定Logger的名字

这是最直接的办法,在蓝图的钩子函数里调用getLogger()时,显式传入主应用模块的名字:

修改flask_api_blueprint.py的代码:

from flask import Blueprint
from myLogger import myLoggerFile
api_blueprint = Blueprint('api_blueprint', __name__)

@api_blueprint.before_app_request
def log_incoming_request():
    # 显式指定logger的名称为"flask_api_example"
    myLoggerFile.getLogger("flask_api_example").info("INCOMING REQUEST")

这样日志里的模块名就会变成你想要的flask_api_example了。

方法二:通过应用上下文获取主应用Logger

如果不想硬编码模块名,也可以利用Flask的应用上下文,通过current_app获取主应用的logger,这样更灵活:

修改flask_api_blueprint.py:

from flask import Blueprint, current_app
from myLogger import myLoggerFile
api_blueprint = Blueprint('api_blueprint', __name__)

@api_blueprint.before_app_request
def log_incoming_request():
    # 用current_app.name来获取主应用的模块名,传给自定义Logger
    logger = myLoggerFile.getLogger(current_app.name)
    logger.info("INCOMING REQUEST")

这种方法的好处是,以后如果主应用的模块名改了,你不用修改蓝图里的代码,它会自动适配。

方法三:注册蓝图时传递主应用Logger

你还可以在主应用里把自己的logger传给蓝图,然后在钩子函数里使用:

  1. 先给蓝图添加一个logger属性,在flask_api_blueprint.py里:
from flask import Blueprint
from myLogger import myLoggerFile
api_blueprint = Blueprint('api_blueprint', __name__)
# 先初始化一个默认logger,后面会被主应用覆盖
api_blueprint.logger = myLoggerFile.getLogger()
  1. 在flask_api_example.py注册蓝图前,把主应用的logger赋值给蓝图:
from flask import Flask
from flask_api_blueprint import api_blueprint
from myLogger import myLoggerFile
app = Flask(__name__)
# 将主应用的logger传给蓝图
api_blueprint.logger = myLoggerFile.getLogger()
app.register_blueprint(api_blueprint)
logger = myLoggerFile.getLogger()
  1. 最后在钩子函数里使用蓝图的logger:
@api_blueprint.before_app_request
def log_incoming_request():
    api_blueprint.logger.info("INCOMING REQUEST")

这三种方法都能解决你的问题,你可以根据自己的项目情况选最合适的~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:38:12