我正在为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
答案 0 :(得分:3)
默认情况下,在全新安装时未启用非关键消息的日志记录。您可以通过设置log_destination
和logging_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/