如果已经有人问过这个问题,我深表歉意,但我找不到我想要的确切内容。
我正在寻找记录从 sqlalchemy 到 syslog 的查询持续时间的最佳方法。
我读过这个:http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html#configuring-logging我已经阅读了有关 sqlalchemy 信号的信息,但我不确定它们是否适合我想要做的事情。 echo 和 echo_pool 标志似乎只是记录到标准输出?我也想要比他们提供的更多信息。在我的完美世界中,对于每个查询,我可以获得查询字符串、查询的持续时间,甚至 python 堆栈跟踪。
我们以几种不同的方式使用 sqlalchemy:我们使用 ORM,我们使用查询生成器,我们甚至使用传递来执行的文本查询。如果有一个信号会触发函数,无论使用哪种方式 sqlalchemy,那就完美了。
我还在考虑在代码中找到它实际通过网络发送查询的位置,如果有人对此有一些见解,那就太好了。
我想得越多,我就越觉得如果这是一种痛苦,那么可能不值得付出努力,但如果有人知道一个可以拯救世界的钩子(Hook),我想我会问。作为记录,我使用 Flask 和 Flask-Sqlalchemy 扩展。
如果有任何不清楚的地方,请告诉我。
谢谢!
最佳答案
Flask-SQLAlchemy 已在 Debug模式下(或以其他方式设置选项时)记录有关每个查询的信息。您可以通过 get_debug_queries()
来获取它.
如果您使用Flask-DebugToolbar ,它提供了一个叠加层,让您可以探索每个请求的数据。
如果您想记录此信息,您可以添加一个函数,在每个记录此信息的请求后触发。
@app.after_request
def record_queries(response):
for info in get_debug_queries():
# write to syslog here
return response
关于python - sqlalchemy 查询持续时间日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24234652/