2016-10-05 122 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 –

相關問題