将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”
答案 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)
您错误地解释了文档。 log_statement
parameter不允许none
值。可能的值是:ddl
,mod
,all
,default
(以及DEBUG5
伪值。)
您可能还想更改log_min_messages
parameter或log_min_error_statement
parameter。他们允许使用以下值:DEBUG4
,DEBUG3
,DEBUG2
,DEBUG1
,LOG
,NOTICE
,WARNING
,{{1 },ERROR
,FATAL
和PANIC
。设置PANIC
以进行最少的日志记录。
事实是,对于上述三个参数,文档说:
只有超级用户才能更改此设置。
因此,除非您可以作为postgres
用户连接到PostgreSQL数据库或直接编辑PostgreSQL配置文件,否则您可能无法更改日志记录选项。
你可以向Heroku支持一些解决方法。但我不知道如何更改日志记录选项,因为它们可能不会为您提供超级用户访问权限。也许你可以要求他们为你做这件事(即更改日志记录选项),或者你可以使用一些特殊工具来过滤日志(不更改日志记录选项),我不知道。