我正在为 PostgreSQL 开发 C 扩展库。我使用了很多 ereport() 调用来帮助将来进行调试。
我的代码中的典型用法示例如下:
ereport(NOTICE, (errmsg("[%s]: Returned nonzero result (%d).", (const char*)__FUNCTION__, ret)) );
但是,当我查看/var/log/postgresql/postgresql-8.4-main.log 时,我的消息似乎并没有出现在那里 - 只有来 self 认为是数据库服务器守护进程的消息。
那么,我的日志消息存储在哪里?
顺便说一句,我在 Ubuntu Linux (10.0.4) 上运行 PG 8.4
最佳答案
默认情况下,全新安装不会启用非关键消息的日志记录。您可以通过设置 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/
关于PostgreSQL:ereport() 的输出到哪里去了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769933/