PostgreSQL:ereport() 的输出到哪里去了?

标签 postgresql

我正在为 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_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/

关于PostgreSQL:ereport() 的输出到哪里去了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769933/

相关文章:

postgresql - 从 Postgres 中的时间戳获取两周

postgresql - postgresql中ROWTYPE、TYPE、RECORD的区别?

ruby-on-rails - 无法在 Rails 控制台上填充测试 postgres 数据库

postgresql - pgAdmin 错误 - 关系 "[name of function/Views/Trigger Functions]"不存在

sql - PostgreSQL 动态表访问

regex - isnumeric() 与 PostgreSQL

postgresql - 在 postgresql 中水平分片的好方法是什么

sql - 使用索引加速左 anchor 查询?

Postgresql:删除某些类型的数字之间的空格

sql - 两个日期之间的周数