代码之家  ›  专栏  ›  技术社区  ›  Dean Christian Armada

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

  •  2
  • Dean Christian Armada  · 技术社区  · 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 回复  |  直到 6 年前
        1
  •  3
  •   Laurenz Albe    6 年前

    按照您记录的方式,当服务器开始处理语句时,会记录该语句,但只有在执行结束时才知道持续时间。

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

    log_min_duration_statement = 0 相反,语句在执行结束时与持续时间一起记录。