PostgreSQL:ereport()的输出在哪里?

时间:2012-01-07 13:09:56

标签: postgresql

我正在为PostgreSQL开发一个C扩展库。我正在使用大量的ereport()调用来帮助将来调试。

我的代码中使用的典型示例如下:

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

但是,当我查看/var/log/postgresql/postgresql-8.4-main.log时,我的消息似乎没有出现在那里 - 只有我认为的消息是数据库服务器守护程序。

那么,我的日志消息存储在哪里?

BTW,我在Ubuntu Linux(10.0.4)上运行PG 8.4

1 个答案:

答案 0 :(得分:3)

默认情况下,在全新安装时未启用非关键消息的日志记录。您可以通过设置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/