如果debug为true,Flask将仅记录

时间:2018-02-10 17:31:18

标签: python debugging logging flask

我最近创建了一个烧录应用程序,可将视频流式传输到本地网络。这是一个覆盆子pi。我试图使用此代码::

创建一个日志文件
import logging
logging.basicConfig(filename='error.log',level=logging.DEBUG)

当我使用app.run()运行烧瓶应用程序时,应用程序不会将任何内容记录到error.log文件中。但是,当我使用debug = true运行它时,应用程序会记录所有信息。运行它时的error.log文件如下所示:

INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:37:40] "GET /video_feed HTTP/1.1" $
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:37:40] "GET /static/css/bootstrap.$
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:39:45] "GET /video_feed HTTP/1.1" $
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:40:08] "GET / HTTP/1.1" 200 -
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:40:08] "GET /video_feed HTTP/1.1" $
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:40:09] "GET /logs HTTP/1.1" 200 -
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:40:10] "GET /invalidpass HTTP/1.1"$
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:40:21] "GET /logs HTTP/1.1" 200 -
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:40:29] "GET / HTTP/1.1" 200 -
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:40:30] "GET /video_feed HTTP/1.1" $
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:40:31] "GET /logout HTTP/1.1" 302 -
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:40:31] "GET /welcome HTTP/1.1" 302$
INFO:werkzeug:10.0.0.127 - - [10/Feb/2018 16:40:31] "GET /login HTTP/1.1" 200 -

我想知道在运行我的烧瓶应用程序时是否可以不启用Debug,并且仍然将所有信息记录到error.log文件中。我已经尝试将级别切换到logging.INFO,但这没有用。

3 个答案:

答案 0 :(得分:1)

尝试将日志记录级别设置为错误。

logging.basicConfig(filename='error.log',level=logging.ERROR)

答案 1 :(得分:0)

您正在设置根记录器的日志级别,但正如flask logging docs中所述,在“flask”记录命名空间中配置自己的记录器。

应用程序记录器可用作应用程序对象的属性。做

app = Flask(__name__)
app.logger.setLevel(logging.DEBUG)

如果您希望始终以DEBUG级别显示日志。

答案 2 :(得分:0)

我无法弄清楚我想用这种方式记录哪种方式,所以我决定创建自己的日志记录实例,然后记录我想要的任何信息,这似乎有效。虽然这是一个较长且手动的过程,但它让我可以控制记录的内容以及记录的内容。代码看起来类似于::

#Import requests from flask to log things such as form data and other requests made to the server
from flask import request
#import python logging for logging to files
import logging
from logging.handlers import RotatingFileHandler
#How I logged the information I wanted to log
logInfo = 'Info on Login: ' +  'IP: ' + request.remote_addr
    app.logger.info(logInfo)

#Create the logging instance test

handler = RotatingFileHandler('error.log', maxBytes=10000, backupCount=1)
handler.setLevel(logging.INFO)
app.logger.addHandler(handler)
app.logger.info('INFO TEST')