如何设置Heroku Postgresql的日志记录级别?

时间:2016-10-05 20:02:50

标签: heroku-postgres

将Heroku与Postgresql附加组件一起使用。在查看我的日志后,似乎postgresql正在记录每个...单个...事务。我了解您可以通过执行类似(https://www.postgresql.org/docs/9.1/static/runtime-config-logging.html

的操作来设置日志级别
ALTER DATABASE my_database SET log_statement=error;

然而,Heroku说

ERROR:  permission denied to set parameter "log_statement"

请注意,这可能是how to turn off Heroku SQL logs from postgres的可能副本,但它们从未解决过如何绕过Heroku权限。 (我应该在那张票上开始赏金还是保留这张票?)

如何修改 Heroku Postgresql日志记录级别?

更新

Folowing Get DB owner's name in PostgreSql

pg_catalog.pg_get_userbyid(d.datdba) as "Owner"
FROM pg_catalog.pg_database d
ORDER BY 1;

我得到以下结果

Name        Owner
d7c0sfp134dmml  u2mqn7a68c982v
postgres    postgres
template0   postgres
template1   postgres

ALTER DATABASE d7c0sfp134dmml SET log_statement = error;

结果

  

错误:拒绝设置参数“log_statement”查询的权限   失败的PostgreSQL说:权限被拒绝设置参数   “log_statement”

2 个答案:

答案 0 :(得分:3)

截至2017年8月8日,Heroku Postgres现在可以通过PGSettings功能更改此功能。例如,记录standard-0或更高级别(无爱好计划)上的所有语句的命令将是:

heroku pg:settings:log-statement all postgresql-large-1234 -a sushi

参考:https://devcenter.heroku.com/articles/heroku-postgres-settings#log-statement

答案 1 :(得分:1)

  1. 您错误地解释了文档。 log_statement parameter不允许none值。可能的值是:ddlmodalldefault(以及DEBUG5伪值。)

    您可能还想更改log_min_messages parameterlog_min_error_statement parameter。他们允许使用以下值:DEBUG4DEBUG3DEBUG2DEBUG1LOGNOTICEWARNING,{{1 },ERRORFATALPANIC。设置PANIC以进行最少的日志记录。

  2. 事实是,对于上述三个参数,文档说:

      

    只有超级用户才能更改此设置。

    因此,除非您可以作为postgres用户连接到PostgreSQL数据库或直接编辑PostgreSQL配置文件,否则您可能无法更改日志记录选项。

    你可以向Heroku支持一些解决方法。但我不知道如何更改日志记录选项,因为它们可能不会为您提供超级用户访问权限。也许你可以要求他们为你做这件事(即更改日志记录选项),或者你可以使用一些特殊工具来过滤日志(不更改日志记录选项),我不知道。