2012-01-07 195 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/