烧瓶 Python 内部记录器未打印到日志或控制台



我正在运行烧瓶应用程序,但我在以下方面有一个内部错误: C:\Python36-64\Lib\site-packages\flask_wtf\csrf.py

except ValidationError as e:
logger.info(e.args[0])
raise

问题是我在任何地方都看不到这个 logger.info.. 在我的烧瓶应用程序中,我将记录器定义为:

logger = logging.getLogger('werkzeug')
logger.setLevel(logging.DEBUG)
logsdir = 'logs/'
handler = RotatingFileHandler(logsdir + "log.log")
# Create Error handler
error_handler = RotatingFileHandler(logsdir + "error_logger.log")
error_handler.setLevel(logging.ERROR)
logger.addHandler(handler)
logger.addHandler(error_handler)
logger.addHandler(default_handler)
app.logger.addHandler(handler)

你可以把它移到 Flask 中钩子。您还可以在 Flask: https://flask.palletsprojects.com/en/1.1.x/errorhandling/中查看全局异常处理。 下面是在请求之前配置记录器的代码。

@app.before_first_request
def setup_logging():
if not app.debug:
# In production mode, add log handler to sys.stdout.
app.logger.handlers.pop()
if not app.logger.hasHandlers():
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter(
'%(asctime)s - [%(levelname)s] - [%(thread)d] - [%(threadName)s] - %(name)s  - %(message)s'))
app.logger.addHandler(handler)
app.logger.setLevel(logging.DEBUG)
app.logger.propagate = False
app.logger.propagate = False
app.logger.handler_set = True
return app.logger

全局异常处理程序,来自 Flask 文档的示例。

from flask import json
from werkzeug.exceptions import HTTPException
@app.errorhandler(HTTPException)
def handle_exception(e):
"""Return JSON instead of HTML for HTTP errors."""
# start with the correct headers and status code from the error
response = e.get_response()
# replace the body with JSON
response.data = json.dumps({
"code": e.code,
"name": e.name,
"description": e.description,
})
response.content_type = "application/json"
return response

此外,请查看 traceback 以获取更多跟踪信息:

try:
return fetch_some_from_db(), 200
except NoResultFound as ex:
LOGGER.error("Received exception in DeleteResource: {}".format(ex))
traceback.print_exc()
db.session.rollback()
db.session.close()
# handle_failure(interface, message, message_json)
return DEFAULT_FAILURE_MESSAGE_NO_MAPPING, 400

最新更新