【发布时间】:2021-12-28 07:51:58
【问题描述】:
用例 - 需要从 Postgres 日志中的 Python/Flask/Sqlalchemy 记录经过身份验证的用户(不是数据库用户)。
目前我已经使用 postgres.conf 启用了 Postgres 日志,格式如下。
log_line_prefix = 'time=%t, %q db=%d, user=%u, ip=%h, app=%a'
这将在 postgres.csv 中记录以下格式。
2021-11-17 09:56:18.856 GMT,"db_user_name","database_name",4962,"10.0.0.2:52068",6194d1c2.1362,16,"idle in transaction",2021-11-17 09:56:18 GMT,3/12392,0,LOG,00000,"statement: Query,,,,,,,,,"AppName"
我想到了以下几种方式:
- 将用户名动态连接到应用程序名称。
- 试图找到向查询添加一些元数据(用户名)的方法。
- 编写一个 sql 函数在每个查询之前执行。
我尝试通过以下方式将用户名连接到 app_name。
self.session.bind.url.query.update({'application_name': 'TEST_USERNAME'})
self.engine.url.query.update({'application_name': 'TEST_USERNAME'})
但这并没有反映或更新日志中的应用程序名称。
我还尝试在查询中添加一些元数据,但它也没有反映在日志中。
对于sql函数,我觉得是不必要的开销。
我很想知道是否有人处理这个用例,或者如果有人可以指导我找到解决方案,我会很感激。
【问题讨论】:
标签: python postgresql flask sqlalchemy