您可以使用 Python 自带的 logging 模块来实现 Flask 日志记录功能。以下是一个简单的示例:
import os
import logging
from logging.handlers import TimedRotatingFileHandler
from flask import Flask, requestapp = Flask(__name__)# 创建日志目录
if not os.path.exists('logs'):os.mkdir('logs')# 配置日志记录器
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)# 创建日志文件处理器,每天生成一个新的日志文件
log_handler = TimedRotatingFileHandler('logs/myapp.log',when='D',interval=1,backupCount=7,encoding='utf-8'
)# 配置日志文件处理器
formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
log_handler.setFormatter(formatter)
logger.addHandler(log_handler)@app.before_request
def log_request_info():# 记录请求前的所有参数logger.info('Request: %s %s %s %s %s %s %s %s',request.remote_addr,request.method,request.scheme,request.full_path,request.headers,request.args,request.form,request.json)@app.after_request
def log_response_info(response):# 记录返会的所有参数logger.info('Response: %s %s %s %s', response.status, response.headers,response.get_data(),response.get_json())return response
上述示例中,我们首先创建了一个名为 myapp.log
的日志文件,并将日志级别设置为 INFO
。然后,我们创建了一个 before_request
钩子函数来记录请求前的所有参数,以及一个 after_request
钩子函数来记录返会的所有参数。最后将日志文件处理器添加到日志记录器中即可。
请注意,在日志处理程序中,我们使用了 TimedRotatingFileHandler
类,该类可以按时间轮换日志文件。在上面的示例中,我们将日志文件的生成间隔设置为 1 天,上限为 7 个日志文件。这意味着每天将生成一个新的日志文件,并自动删除最老的日志文件。