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 -
答案 0 :(得分:6)
我假设您正在使用烧瓶开发服务器。
Flask的开发服务器基于werkzeug,其WSGIRequestHandler
又基于标准库中的BaseHTTPServer
。
当您注意到WSGIRequestHandler
overrides the logging methods,log_request
,log_error
和log_message
时,要使用它自己的logging.Logger
- 所以你可以根据自己的意愿简单地覆盖它,这是IJade的回答。
如果你沿着这条路走下去,我认为改为使用自己的FileHandler更加清晰,split the stdout and stderr output using a filter
但请注意,所有这些都是特定于实现的 - 实际上没有合适的界面来执行您想要的操作。
虽然它与您的实际问题相关,但我觉得我真的必须要问 - 您为什么担心开发服务器上每个日志的内容?
如果您遇到此类问题,您是否应该运行真正的网络服务器?
答案 1 :(得分:4)
这是你要做的。 Import logging并设置记录所需的级别。
import logging
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)