2016-10-05 54 views
2

将Heroku与Postgresql附加组件一起使用。在审查我的日志时,似乎postgresql正在记录每个...单个事务。我知道你可以做这样的事情(https://www.postgresql.org/docs/9.1/static/runtime-config-logging.html如何设置Heroku PostgreSQL的日志记录级别?

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日志级别?

更新

如下因素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; 

结果

ERROR: permission denied to set parameter "log_statement" Query failed PostgreSQL said: permission denied to set parameter "log_statement"

+0

你用什么用户名登录到PostgreSQL的?它是否对应于my_database的所有者? – Sasha

+0

@Sasha请参阅**更新** –

+0

好的,我看到'd7c0sfp134dmml'的主人。你登录哪个用户?只要做'SELECT current_user;'。 – Sasha

回答

1
  1. 您错误地解释了文档。 log_statement parameter不允许error值。可能的值是:none,ddl,mod,all(和default伪值)。您可能还想更改log_min_messages parameterlog_min_error_statement parameter。他们让这些值:DEBUG5DEBUG4DEBUG3DEBUG2DEBUG1LOGNOTICEWARNINGERRORFATALPANIC。设置最小日志记录的PANIC

  2. 的事实是,所有上述三个参数文件说:

    Only superusers can change this setting.

    所以,除非你可以连接到PostgreSQL数据库作为postgres用户或编辑PostgreSQL的配置文件直接,你可能无法改变日志选项。

    你可能会问Heroku支持一些解决方法。但是我看不出如何更改日志记录选项,因为它们可能不会授予您超级用户访问权限。也许你可以让他们为你做(即改变日志选项),或者你可以使用一些特殊的工具来过滤日志(不需要改变日志选项),我不知道。

+0

奇怪的是,我没有在PostgreSql Hobby-Basic层获取所有这些日志消息,但是我在标准0 –