结合PostgreSQL查询和日志持续时间

6
我知道您可以使用以下配置在postgresql.conf中显示查询的持续时间和日志记录。
------------------------------------------------------------------------------
 CUSTOMIZED OPTIONS
------------------------------------------------------------------------------

log_statement = 'all'
log_duration = on
log_line_prefix = '{"Time":[%t], Host:%h} '

然后返回类似以下的日志:

{"Time":[2018-08-13 16:24:20 +08], Host:172.18.0.2} LOG:  statement: SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1
{"Time":[2018-08-13 16:24:20 +08], Host:172.18.0.2} LOG:  duration: 7.694 ms

我可以将持续时间和语句组合成一行吗?
LOG: { statement: ..., duration: 7.694 ms}

1
你尝试过 log_min_duration_statement = 0 吗? - Laurenz Albe
你的答案太完美了!!! - Dean Christian Armada
1个回答

8

你正在记录日志的方式是,当服务器开始处理语句时就记录下来,但持续时间只有在执行结束时才知道。

这就是为什么必须将其作为两个不同的消息进行记录。

如果您改用log_min_duration_statement = 0,则该语句将在执行结束时与持续时间一起记录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接