您可以使用 Python 自带的 logging 模块来实现 Flask 日志记录功能。以下是一个简单的示例:
python
import os
import logging
from logging.handlers import TimedRotatingFileHandler
from flask import Flask, request
app = 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 个日志文件。这意味着每天将生成一个新的日志文件,并自动删除最老的日志文件。