首页 > 解决方案 > 如何将异常记录到文件中?

问题描述

我的一条生产路线遇到了困难。我正在尝试用logging模块诊断错误:

初始化.py:

from flask import Flask
from logging import FileHandler, DEBUG
...

def create_app(script_info=None):
    app = Flask(__name__, template_folder='', static_folder='')
    file_handler = FileHandler('./errorlog.txt')
    file_handler.setLevel(DEBUG)
    app.logger.addHandler(file_handler)
    ...
    ...
    
    return app

蓝图路线:

from flask import current_app
from datetime import datetime
...
...

@blog_blueprint.route('/contact', methods=['POST'])
@cross_origin()
def contact():
    ...
    ...
        requests.post('https://api.sendpulse.com/smtp/emails', data=json.dumps(data))
            response_obj['status'] = 'success'
            response_obj['message'] = 'message sent'
            return jsonify(response_obj), 200
        except Exception as e:
            current_app.logger.debug(f'{datetime.now()}: '+str(e))
            return jsonify(response_obj), 400
    else:
        current_app.logger.debug(f'{datetime.now()}, name: '+name)
        current_app.logger.debug(f'{datetime.now()}, email: '+email)
        current_app.logger.debug(f'{datetime.now()}, subject: '+subject)
        response_obj['message'] = 'unrecognized email provider'
        return jsonify(response_obj), 400

errorlog.txt文件已创建,但在测试路线后为空。非常感谢任何反馈。

标签: python-3.xflasklogging

解决方案


可能默认的日志记录级别高于 DEBUG。如果你这样做,它是否有效:current_app.logger.warning("test")

然后尝试像这样设置调试级别:

current_app.logger.setLevel(logging.DEBUG)

请注意,它是在记录器而不是处理程序上完成的。


推荐阅读