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

Dea*_*ada 4 postgresql

我知道您可以使用 postgresql.conf 中的以下配置显示持续时间和日志查询

------------------------------------------------------------------------------
 CUSTOMIZED OPTIONS
------------------------------------------------------------------------------

log_statement = 'all'
log_duration = on
log_line_prefix = '{"Time":[%t], Host:%h} '
Run Code Online (Sandbox Code Playgroud)

然后返回日志,如

{"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
Run Code Online (Sandbox Code Playgroud)

但是我可以将持续时间和语句组合在一行中吗?

LOG: { statement: ..., duration: 7.694 ms}
Run Code Online (Sandbox Code Playgroud)

Lau*_*lbe 6

您记录的方式是,在服务器开始处理语句时记录语句,但持续时间仅在执行结束时才知道。

这就是为什么它必须被记录为两个不同的消息。

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