Flask Json请求400日志记录?

3 投票
1 回答
1314 浏览
提问于 2025-04-19 07:15

我自己写了一个客户端,通过我的无线网卡向我的flask网页服务器发送原始的http请求。

这就是一个典型的请求的样子:

Content-Length: 214
User-Agent: blah
Connection: close
Host: 1.2.3.4:5000
Content-Type: application/json

{"data":[{"scoutId":2,"message":"ph=5.65"},{"scoutId":4,"message":"ph=4.28"},{"scoutId":3,"message":"ph=4.28"},{"scoutId":2,"message":"ph=5.65"},{"scoutId":4,"message":"ph=4.28"},{"scoutId":3,"message":"ph=4.30"}]}

有时候,我的客户端会出错,发送格式不正确的JSON请求到我的flask服务器。通常情况下,flask只会显示:

1.2.3.5 - - [01/Sep/2014 22:13:03] "POST / HTTP/1.1" 400 -

而不会提供关于请求的任何有用信息。

我想要记录下每一个导致400错误的请求,并分析是什么原因造成这些错误的。

我应该把我的自定义错误处理函数放在哪里呢?

1 个回答

6

试着打开这个设置:

app.config['TRAP_BAD_REQUEST_ERRORS'] = True

这样做应该能让flask抛出一个异常,而不是仅仅记录一个400错误(具体可以查看这里的文档)。

如果你需要做更多的事情,可以创建一个事件处理器:

http://flask.pocoo.org/docs/0.10/patterns/errorpages/

@app.errorhandler(400)
def page_not_found(exc):
    #do something with the exception object `exc` here
    ....

或者试着把你的视图函数的主体放在try/except块中。

撰写回答