最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】Flask中添加log且输出到文件中

Flask crifan 6361浏览 0评论

折腾:

【已解决】CentOS服务器中搭建Python的Flask的REST API

期间,给Flask中添加log,且能输出到文件中。

参考:

快速入门 — Flask 0.10.1 文档

直接去试试:

<code>app = Flask(__name__)
log = app.logger
log.debug("app=%s", app)

api = Api(app)
log.info("api=%s", api)

</code>

结果调试时没有打印出log:

flask log

Logging — Flask Documentation (0.13-dev)

Application Errors — Flask Documentation (0.12)

Flask logging example

Flask logging example

记录应用错误 — Flask 0.10.1 文档

Flask logging 使用

flask app logger not work

python – Flask logging not working at all – Stack Overflow

好像是:

默认的logger是warning之上的才打印,所以此处info和debug没有输出?

果然是的:

此处Flask的app.logger,默认的level是WARNING

-》只有warning以上的才会输出

-〉所以此处的,warning以上的error能输出,而warning和info,没有输出

-》所以为了能让debug输出的话,则去设置level即可:

<code>import logging
# from flask_pymongo import PyMongo

app = Flask(__name__)
app.logger.setLevel(logging.INFO)
log = app.logger
log.error("app=%s", app)
log.warning("app=%s", app)
log.debug("app=%s", app)
</code>

结果warning和info还是没有输出

然后再去解决:

【已解决】Flask的log输出异常:file和console中无法输出指定的level的log

然后接着去:

【不去解决】Flask中去掉默认的logger的log输出

【总结】

此处通过:

<code>from flask import Flask
from flask import jsonify
from flask_restful import Resource, Api, reqparse
import logging
from logging.handlers import RotatingFileHandler
# from flask_pymongo import PyMongo

app = Flask(__name__)

FLASK_APP = "RobotQA"

LOG_FILE_FILENAME = "logs/" + FLASK_APP + ".log"
LOG_FORMAT = "[%(asctime)s %(levelname)s %(filename)s:%(lineno)d %(funcName)s] %(message)s"

app.config['LOG_FILE_FILENAME'] = LOG_FILE_FILENAME
app.config["LOG_FORMAT"] = LOG_FORMAT

logFormatterStr = app.config["LOG_FORMAT"]
logFormatter = logging.Formatter(logFormatterStr)

fileHandler = RotatingFileHandler(
    app.config['LOG_FILE_FILENAME'],
    maxBytes=2*1024*1024,
    backupCount=3,
    encoding="UTF-8")
fileHandler.setLevel(logging.DEBUG)
fileHandler.setFormatter(logFormatter)
app.logger.addHandler(fileHandler)

streamHandler = logging.StreamHandler()
streamHandler.setFormatter(logFormatter)
streamHandler.setLevel(logging.INFO)
app.logger.addHandler(streamHandler)

app.logger.setLevel(logging.DEBUG) # set root log level

log = app.logger
log.error("error: app=%s", app)
log.warning("warning: app=%s", app)
log.info("info: app=%s", app)
log.debug("debug: app=%s", app)

api = Api(app)
log.info("api=%s", api)
...

if __name__ == "__main__":
    # app.debug = True
    app.run()
</code>

实现了log输出:

转载请注明:在路上 » 【已解决】Flask中添加log且输出到文件中

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.186 seconds, using 22.14MB memory