sqlalchemy查询持续时间日志记录

2024-06-06 17:25:28 发布

您现在位置:Python中文网/ 问答频道 /正文

如果有人问过我,我很抱歉,但是我找不到我想要的东西。在

我在寻找最好的方法来记录从sqlalchemy到syslog的查询持续时间。在

我读过这篇文章:http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html#configuring-logging我也读过关于sqlalchemy信号的文章,但我不确定它们是否适合我要做的事情。echo和echo_池标志似乎只记录到stdout?我也想要比他们提供的更多的信息。在我的完美世界中,对于每个查询,我可以得到查询字符串、查询持续时间,甚至python堆栈跟踪。在

我们以两种不同的方式使用sqlalchemy:使用ORM,使用查询生成器,甚至使用传递给执行的文本查询。如果有一个信号会触发一个函数,不管使用sqlalchemy的方式是什么,那就太完美了。在

我也在考虑在代码中找到它实际上通过网络发送查询的位置,如果有人对此有所了解,那也太好了。在

我想得越多,我就越觉得如果这是一种痛苦的话,可能不值得付出努力,但如果有人知道有一种钩子可以挽救这一天,我想我会问。作为记录,我使用了Flask和Flask Sqlalchemy扩展名。在

如果有什么不清楚的地方,请告诉我。在

谢谢!在


Tags: 方法orgechohttpflaskdocs信号sqlalchemy
1条回答
网友
1楼 · 发布于 2024-06-06 17:25:28

Flask SQLAlchemy已经在调试模式下记录了每个查询的信息(或者当选项设置为其他模式时)。你可以用^{}来做。在

如果您使用的是Flask-DebugToolbar,它提供了一个覆盖层,允许您为每个请求探索这些数据。在

如果您想记录这一点,您可以添加一个函数,以便在记录此信息的每个请求之后触发。在

@app.after_request
def record_queries(response):
    for info in get_debug_queries():
        # write to syslog here

    return response

相关问题 更多 >