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

Python 3.8 Flask日志仅输出到文件,无法打印至控制台问题

解决Flask日志同时输出到控制台和文件的问题

你的代码问题出在Flask debug模式会自动重置日志配置,导致手动添加的控制台处理器被覆盖。以下是修复后的完整代码:

import logging
from flask import Flask, make_response
from flask_cors import CORS
from Handlers import Handlers

app = Flask(__name__)

CORS(app, supports_credentials=True, resources=r'/*'
     , methods=['GET', 'HEAD', 'POST', 'OPTIONS', 'PUT', 'PATCH', 'DELETE']
     , allow_headers=["Accept", "Authorization", "Content-Type", "X-CSRF-Token"])

@app.route('/', methods=['POST'])
def handleBroker():
    handlers = Handlers()  
    return handlers.broker()

@app.route('/handle', methods=['POST'])
def handleSubmission():
    handlers = Handlers()  
    return handlers.handleSubmission()

if __name__  == '__main__':
    # 配置app专属日志
    logger = app.logger
    # 清空Flask默认添加的处理器,避免debug模式干扰
    logger.handlers.clear()
    logger.setLevel(logging.INFO)
    
    # 定义日志格式
    formatter = logging.Formatter('%(asctime)s %(levelname)s %(name)s %(threadName)s : %(message)s')

    # 文件处理器
    fileHandler = logging.FileHandler('test.log')
    fileHandler.setLevel(logging.INFO)
    fileHandler.setFormatter(formatter)

    # 控制台处理器
    consoleHandler = logging.StreamHandler()
    consoleHandler.setLevel(logging.INFO)
    consoleHandler.setFormatter(formatter)

    # 添加处理器到app日志器
    logger.addHandler(fileHandler)
    logger.addHandler(consoleHandler)

    # 启动日志放在配置完成后
    logger.info("Start broker-service port %s", 71)
    
    app.run(host="localhost", port=71, debug=True)

关键修复点:

  • 清空默认处理器:调用logger.handlers.clear()移除Flask自动添加的日志处理器,避免debug模式下的配置覆盖手动添加的控制台处理器。
  • 调整日志输出时机:将启动日志移到日志配置完成后,确保这条日志也能同时输出到文件和控制台。
  • 移除无用代码:删除未使用的logging.getLogger('dev')代码,避免混淆。

额外说明:

如果需要同时保留Werkzeug的debug请求日志,保持logger.propagate = True(默认值)即可,app的日志会自动传播到root logger,不影响框架自带日志的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:55:26