zoukankan      html  css  js  c++  java
  • 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,比较常用的有FileHandlerRotatingHandler,其中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的级别主要有NOTSETDEBUGINFOWARNINGERRORCRITICAL,挺容易理解的。


    高级一些的示例:

    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

  • 相关阅读:
    pecl install swoole 安装php扩展swoole
    RBAC
    mysql数据类型
    ES6——Proxy的this问题
    ES6——Proxy实现链式操作
    ES6——Symbol内置值
    ES6——yield例子
    ES6——Generator的next()方法
    ES6——Thunkify用法
    Linux学习day1
  • 原文地址:https://www.cnblogs.com/fengff/p/9512045.html
Copyright © 2011-2022 走看看