Postgresql 如何在Postgres 9.6中截断log语句

Postgresql 如何在Postgres 9.6中截断log语句,postgresql,postgresql-9.6,Postgresql,Postgresql 9.6,我们有一个大型查询,它需要很长时间,而且运行频繁。我们只关心此查询的日志持续时间,而不关心完整的查询,它大约有10-20M字符长,并且占用大量磁盘空间 当前位于/var/lib/pgsql/9.6/data/pg_log/postgresql-2017-09-01.log中: 2017-09-01 01:00:12.511 UTCuser@dbname25304 x.x.x.x日志:持续时间:966.603 ms语句:插入表_名称(col1,col2,col3…)值(val1)(val2)(va

我们有一个大型查询,它需要很长时间,而且运行频繁。我们只关心此查询的日志持续时间,而不关心完整的查询,它大约有10-20M字符长,并且占用大量磁盘空间

当前位于/var/lib/pgsql/9.6/data/pg_log/postgresql-2017-09-01.log中:

2017-09-01 01:00:12.511 UTCuser@dbname25304 x.x.x.x日志:持续时间:966.603 ms语句:插入表_名称(col1,col2,col3…)值(val1)(val2)(val3)

我们希望实现的目标:

  • 仍然记录持续时间,但可能只记录语句的前xxx(比如200)个字符
  • 我们可能会增加log\u min\u duration\u语句,这样就根本不会记录此查询,但我们也希望记录其他查询,所以这不是一个好的解决方案
  • 如果无法记录部分查询,我们只能将此查询从日志中排除,还是将此表从日志中排除,并且仍然记录比log\U min\U duration\U语句更长的其他查询


    我已经研究了一段时间,还没有找到解决办法。如果有人能透露一些信息那就太好了。谢谢

    修补postgres的日志收集器以添加最大日志行长度选项应该很容易,您可以提交修补程序以包含在上游postgres中。另一个选项也涉及一些C编码,即编写日志筛选器作为加载到
    共享预加载库中的C扩展。日志筛选器可能会禁止记录语句。请使用Glogg并应用模式表达式