↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.0 / 6.4
历史版本。 PostgreSQL 7.0 已结束支持。 请参阅 当前版本手册.

32.3. 调试消息

postmaster 偶尔会打印出一些在故障排除时往往很有帮助的消息。如果你希望查看来自 postmaster 的调试消息,可以用 -d 选项启动它并把输出重定向到日志文件:

% postmaster -d > pm.log 2>&1 &
    

如果你不希望看到这些消息,可以键入

% postmaster -S
    

这样 postmaster 就会"S"静默。这种情况下不需要与号("&"),因为指定 -S 时 postmaster 会自动脱离终端。

32.3.1. pg_options #

注意

由 Massimo Dal Zotto 贡献。

可选文件 data/pg_options 包含后端用来控制跟踪消息和其他后端可调参数的运行时选项。这个文件的有趣之处在于,后端在收到 SIGHUP 信号时会重新读取它,因此无需重启 Postgres 就可以即时更改运行时选项。这个文件中指定的选项可以是跟踪包(backend/utils/misc/trace.c)使用的调试标志,也可以是后端用来控制其行为的数值参数。新的选项和参数必须在 backend/utils/misc/trace.c 和 backend/include/utils/trace.h 中定义。

pg_options 也可以用 Postgres 的 -T 开关来指定:

postgres options -T "verbose=2,query,hostlookup-"
    

用于打印错误和调试消息的函数现在可以利用 syslog(2) 设施了。打印到 stdout 或 stderr 的消息带有一个还包含后端 pid 的时间戳前缀:

#timestamp          #pid    #message
980127.17:52:14.173 [29271] StartTransactionCommand
980127.17:52:14.174 [29271] ProcessUtility: drop table t;
980127.17:52:14.186 [29271] SIIncNumEntries: table is 70% full
980127.17:52:14.186 [29286] Async_NotifyHandler
980127.17:52:14.186 [29286] Waking up sleeping backend process
980127.19:52:14.292 [29286] Async_NotifyFrontEnd
980127.19:52:14.413 [29286] Async_NotifyFrontEnd done
980127.19:52:14.466 [29286] Async_NotifyHandler done
    

这种格式提高了日志的可读性,使人们能准确了解哪个后端在什么时间做什么。它也使得编写简单的 awk 或 perl 脚本来监视日志以检测数据库错误或问题、或计算事务时间统计变得更容易。

打印到 syslog 的消息使用日志设施 LOG_LOCAL0。syslog 的使用可以用 syslog pg_option 来控制。遗憾的是,许多函数直接调用 printf() 把消息打印到 stdout 或 stderr,这样的输出不能被重定向到 syslog 也不能带时间戳。最好把所有对 printf 的调用都替换为 PRINTF 宏、把输出到 stderr 改为使用 EPRINTF,这样我们就能以统一的方式控制所有输出。

pg_options 文件的格式如下:

# comment
option=integer_value  # set value for option
option                # set option = 1
option+               # set option = 1
option-               # set option = 0
     

注意,keyword 也可以是 backend/utils/misc/trace.c 中定义的选项名的缩写。

完整的选项关键字及其可能取值的列表请参考使用 pg_options [原文引用目标缺失] [查看原文章节]。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.

历史原文引用 (1)

此原始版本缺少部分引用目标。正文已标明这些引用,下列清单保留原始地址。

  • pg-options.html#PG-OPTIONS-TITLE