Flask使用日志记录到文件示例 | 您所在的位置:网站首页 › 怎样写日志文件 › Flask使用日志记录到文件示例 |
https://www.polarxiong.com/archives/Flask%E4%BD%BF%E7%94%A8%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E5%88%B0%E6%96%87%E4%BB%B6%E7%A4%BA%E4%BE%8B.html flask的日志记录需要用到python标准库logging的支持。 最简单示例: Python from flask import Flask import logging app = Flask(__name__) @app.route('/') def root(): app.logger.info('info log') app.logger.warning('warning log') return 'hello' if __name__ == '__main__': app.debug = True handler = logging.FileHandler('flask.log') app.logger.addHandler(handler) app.run()记录到flask.log中内容为: info log warning log Python handler = logging.FileHandler('flask.log')即创建一个log handler,比较常用的有FileHandler和RotatingHandler,其中FileHandler函数原型为 Python class logging.FileHandler(filename,mode='a',encoding=None,delay=False) Python app.logger.addHandler(handler)即将此handler加入到此app中 Python app.logger.info('info log')即以INFO级别将'info log'写入到日志中。 logging的级别主要有NOTSET、DEBUG、INFO、WARNING、ERROR和CRITICAL,挺容易理解的。 高级一些的示例: Python from flask import Flask import logging app = Flask(__name__) @app.route('/') def root(): app.logger.info('info log') app.logger.warning('warning log') return 'hello' if __name__ == '__main__': app.debug = True handler = logging.FileHandler('flask.log', encoding='UTF-8') handler.setLevel(logging.DEBUG) logging_format = logging.Formatter( '%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s') handler.setFormatter(logging_format) app.logger.addHandler(handler) app.run()记录到flask.log中内容为: 2015-08-29 10:12:48,004 - INFO - test.py - root - 9 - info log 2015-08-29 10:12:48,004 - WARNING - test.py - root - 10 - warning log Python handler.setLevel(logging.DEBUG)即设置日志记录最低级别为DEBUG,低于DEBUG级别的日志记录会被忽略,不设置setLevel()则默认为NOTSET级别。 Python logging_format = logging.Formatter( '%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s') handler.setFormatter(logging_format)这两句用来控制日志记录格式,效果如上述记录内容;在Python参考文档中有更详细的说明,这里简单介绍一下: %(asctime)s 即日志记录时间,精确到毫秒 %(levelname)s 即此条日志级别 %(filename)s 即触发日志记录的python文件名 %(funcName)s 即触发日志记录的函数名 %(lineno)s 即触发日志记录代码的行号 %(message)s 这项即调用如app.logger.info('info log')中的参数,即message注意:此示例来自Python 3.4.3 和Flask 0.10.1 |
CopyRight 2018-2019 实验室设备网 版权所有 |