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
浙公网安备 33010602011771号