flask日志

您可以使用 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 个日志文件。这意味着每天将生成一个新的日志文件,并自动删除最老的日志文件。

相关推荐
DokiDoki之父6 分钟前
Spring—注解开发
java·后端·spring
提笔了无痕25 分钟前
什么是Redis的缓存问题,以及如何解决
数据库·redis·后端·缓存·mybatis
浪里行舟30 分钟前
国产OCR双雄对决?PaddleOCR-VL与DeepSeek-OCR全面解析
前端·后端
Blossom.11834 分钟前
把AI“刻”进玻璃:基于飞秒激光量子缺陷的随机数生成器与边缘安全实战
人工智能·python·单片机·深度学习·神经网络·安全·机器学习
lang201509281 小时前
Spring Boot缓存机制全解析
spring boot·后端·缓存
Kratzdisteln1 小时前
【Python OOP Diary 1.1】题目二:简单计算器,改错与优化
python·面向对象编程
一个帅气昵称啊1 小时前
使用微软Agent Framework .NET构建智能代理应用
microsoft·flask·.net
小白银子1 小时前
零基础从头教学Linux(Day 53)
linux·运维·python
桦说编程2 小时前
Java并发编程:两种控制并发度的实现方法及其比较
java·后端
skywalk81632 小时前
基于频域的数字盲水印blind-watermark
linux·开发语言·python