Len*_*ran 6 python flask python-3.x
Flask正在将访问日志写入STDERR流而不是STDOUT.如何更改此配置以使访问日志转到STDOUT并将应用程序错误转发给STDERR?
open-cricket [master] python3 flaskr.py > stdout.log 2> stderr.log &
[1] 11929
open-cricket [master] tail -f stderr.log
* Running on http://127.0.0.1:9001/
127.0.0.1 - - [11/Mar/2015 16:23:25] "GET /?search=Sachin+Tendulkar+stats HTTP/1.1" 200 -
127.0.0.1 - - [11/Mar/2015 16:23:25] "GET /favicon.ico HTTP/1.1" 404 -
Run Code Online (Sandbox Code Playgroud)
我假设你正在使用烧瓶开发服务器.
Flask的开发服务器基于werkzeug,而werkzeugWSGIRequestHandler又基于BaseHTTPServer标准库.
正如你会发现,WSGIRequestHandler覆盖测井方法,log_request,log_error并且log_message,使用它自己logging.Logger-所以你可以简单地重写它如你所愿,在IJade的答案的精神.
如果沿着这条路走下去,我认为改为添加自己的FileHandler会更清晰,并使用过滤器拆分stdout和stderr输出
但请注意,所有这些都是特定于实现的 - 实际上没有适当的接口来执行您想要的操作.
虽然它与您的实际问题相关,但我觉得我真的必须问 - 为什么您担心开发服务器上每个日志的内容?
如果您遇到这种问题,那么您是否应该运行真正的Web服务器?
这就是你要做的。导入日志记录并设置您需要记录的级别。
import logging
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
Run Code Online (Sandbox Code Playgroud)