2012-01-07 104 views
3

我正在爲PostgreSQL開發C擴展庫。我正在使用大量的ereport()調用來幫助未來的調試。PostgreSQL:ereport()的輸出去哪裏?

在我的代碼使用的一個典型的例子是這樣的:

ereport(NOTICE, (errmsg("[%s]: Returned nonzero result (%d).", (const char*)__FUNCTION__, ret))); 

然而,當我看着我的/var/log/postgresql/postgresql-8.4-main.log的消息似乎並沒有將出現在那裏 - 我只能假設是db服務器守護進程的消息。

那麼,我的日誌消息在哪裏存儲?

順便說一句,我在Ubuntu Linux(10.0.4)

+0

http://www.postgresql.org/docs/current/static/runtime-config-logging.html – 2012-01-07 13:18:31

回答

3

默認情況下運行PG 8.4,非關鍵信息記錄不執行全新安裝啓用。您可以通過設置log_destinationlogging_collector進行配置。

PostgreSQL有幾個日誌記錄級別,默認情況下,NOTICE級別不會保存到日誌文件(即使它們已啓用)。這由log_min_messages設置進行配置。但NOTICE它默認發射到客戶端。這由client_min_messages設置進行配置。

因此,如果您希望將這些文件存儲在日誌文件中,則必須在代碼中將NOTICE更改爲WARNING,或設置log_min_messages = notice

看到這個http://www.postgresql.org/docs/8.4/static/runtime-config-logging.html 也許這http://www.depesz.com/index.php/2011/05/06/understanding-postgresql-conf-log/