Flask使用日志记录到文件示例 您所在的位置:网站首页 怎样写日志文件 Flask使用日志记录到文件示例

Flask使用日志记录到文件示例

2024-06-11 11:58| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有