pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
postmaster 偶尔会打印出 一些在故障排除时往往 很有帮助的消息。如果你希望 查看来自 postmaster 的调试消息, 可以 用 -d 选项启动它并把输出重定向到日志文件:
% postmaster -d > pm.log 2>&1 &
如果你不希望看到这些消息,可以键入
% postmaster -S
这样 postmaster 就会"S"静默。 这种情况下不需要与号("&"),因为指定 -S 时 postmaster 会自动脱离终端。
由 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 文件的格式如下:
#commentoption=integer_value# set value foroptionoption# setoption= 1option+ # setoption= 1option- # setoption= 0
注意,keyword 也可以是 backend/utils/misc/trace.c 中定义的 选项名的缩写。
完整的选项关键字及其可能取值的列表请参考 使用 pg_options。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。