flask: sqlalchemy:记录慢查询日志:(flask-sqlalchemy 3.1.1)

一,创建目录

用来保存sql日志

$ sudo mkdir /var/log/sqlalchemy
$ sudo chmod 777 /var/log/sqlalchemy

二,代码

1,配置

    FLASK_DB_QUERY_TIMEOUT = 0.0001  # 设置sql执行超时时间,#记录执行时间超过 0.0001秒的
    SQLALCHEMY_RECORD_QUERIES = True  # 启用慢查询记录功能

2,记录超时sql

from flask_sqlalchemy.record_queries import get_recorded_queries

@api.after_request
def after_request_sql(response):
    # print()  # 打印超时sql执行信息
    print("开始记录超时sql")
    current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")
    #content = current_time
    day = datetime.now().strftime("%Y%m%d")
    # 日志路径
    file_path = "/var/log/sqlalchemy/debug_sql_" + day + ".txt"

    log_cont = ""
    print("超时时间:"+str(current_app.config['FLASK_DB_QUERY_TIMEOUT']))
    for query in get_recorded_queries():
        print(query.duration)
        if query.duration >= current_app.config['FLASK_DB_QUERY_TIMEOUT']:
            log_cont += '#####Slow query:%s \nParameters:%s \nDuration:%fs\nLocation:%s\n #####' % (query.statement, query.parameters, query.duration,query.location)

    with open(file_path, "a", encoding="utf-8") as file:
        file.write("日志记录时间:"+current_time+"\n"+log_cont+"\n")

    return response

 

posted @ 2026-03-28 08:37  刘宏缔的架构森林  阅读(0)  评论(0)    收藏  举报