flask日志使用

本文介绍了如何在Flask应用中配置和使用日志记录功能,通过示例代码展示了基本的日志输出操作,帮助开发者更好地跟踪和调试应用程序。

示例代码

from flask import Flask, request
import logging
app = Flask(__name__)
# 设置日志输出到文件中,而不是显示到网页
app.config['PROPAGATE_EXCEPTIONS'] = False

class RequestFormatter(logging.Formatter): # 自定义日志格式化类,实现自定义的日志信息
    def format(self, record):
        '''每次生产日志时都会调用,用于生成自定义的日志信息'''
        try:
            record.url = request.url
            record.remote_addr = request.remote_addr
        except:
            record.url = 'null'
            record.remote_addr = 'null'
        finally:
            return super().format(record)

def create_logger():
    # 1.创建flask.app日志器
    flask_app_logger = logging.getLogger('flask.app') # 使用文件名
    # 设置日志级别
    flask_app_logger.setLevel('DEBUG')

    # 2.设置日志处理器,控制台输出
    console_log_handler = logging.StreamHandler()

    # 3.设置日志格式
    console_log_formatter = logging.Formatter(fmt='%(name)s %(levelname)s %(pathname)s %(lineno)d %(message)s')
    console_log_handler.setFormatter(console_log_formatter)

    # 4.添加日志
    flask_app_logger.addHandler(console_log_handler)

    # 创建转存文件处理器
    from logging.handlers import RotatingFileHandler
    file_log_handler = RotatingFileHandler(filename='flask.log', maxBytes=100 * 1024 * 1024, backupCount=10) # 循环存储
    # 设置文件日志的格式
    # 增加format的自定义后,需要用自定义的类RequestFormatter
    file_log_formatter = RequestFormatter(fmt='[%(asctime)s] %(name)s %(levelname)s %(remote_addr)s requested %(url)s %(pathname)s %(lineno)d %(message)s')
    file_log_handler.setFormatter(file_log_formatter)

    # 单独设置文件日志的级别
    file_log_handler.setLevel('ERROR')
    # 添加日志
    flask_app_logger.addHandler(file_log_handler)

@app.route('/')
def index():
    # a = 1 / 0
    app.logger.error("this is a error log")
    return 'index'

if __name__ == '__main__':
    create_logger()
    app.run(debug=True, host='0.0.0.0', port=8000)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值