想把flask在开发环境跑的时候的控制台输出的日志也保存到文件。
参考了网上,基本上都是先配置logger然后自己在代码中加入logger.info('xxx')
来记录日志。
我想实现的效果是,控制台输出的一些请求以及默认打印出来的日志都直接写到log文件。
我配置的logger代码如下:
#app.__init__.py
def create_app(config_name):
...
filehandler = logging.handlers.TimedRotatingFileHandler("flask.log", "M", 1, 0)
filehandler.setLevel('DEBUG')
app.logger.addHandler(filehandler
...
按理效果应该是有一个flask.log文件生成,然后每分钟另存一个。实际效果是有flask.log文件产生,但是控制台打印出来的一些请求和其他信息都没有,也不会按时间自动生成新的日志。
求大神解惑
参考回答中 悦轩 的,把logger加在工厂函数外面,可以记录,加在工厂函数内部,仅会记录你自己在flask工程中显式输出的日志。
可以参考flask官网日志说明,在工厂函数中初始化
在其他模块中要输出日志的时候需要import current_app这个对象:
这样就会有日志的输出了。
我理解是这样的:
如果log的配置写在工厂函数内部,那仅app这个对象的日志才会输出,也就是我们在代码中手动输出的日志才有输出,而运行flask控制台产生的日志是flask框架本省的日志,不会输出,所以会产生log文件,但自己没有手动输出日志,日志就是空的。
当log的配置写在工厂函数外面,那就对整个工程有效,所以flask框架的日志也就会输出了。