在 FreeBSD 11.2 上哪里可以找到来自 Postgres 11.1 的日志?

在 FreeBSD 11.2 上哪里可以找到来自 Postgres 11.1 的日志?

在我的 FreeBSD 11.2 机器上构建了 Postgres 11.1 后,我可以在哪里找到 Postgres 的日志输出。

具体来说,当第一次尝试启动 Postgres 时,我收到一条错误消息,提示pg_ctl我检查日志以了解问题的解释。

$ /usr/local/bin/pg_ctl -D /var/db/postgres/data11 -l logfile start
pg_ctl: another server might be running; trying to start server anyway
waiting for server to start.... stopped waiting
pg_ctl: could not start server
Examine the log output.

在构建 Postgres 时,最终输出提到:

NB. FreeBSD's PostgreSQL port logs to syslog by default
  See ~pgsql/data/postgresql.conf for more info

当我查看该文件时,关于日志的唯一条目是:

log_destination = '系统日志'

➥ 如何查询 syslog 中的 Postgres 日志?

答案1

首先,您必须为 PostgreSQL 创建一个专用的日志文件:

touch /var/log/postgresql.log
chown postgres:wheel /var/log/postgresql.log
chmod 640 /var/log/postgresql.log

之后,/etc/syslog.conf通过添加如下条目,将更新并将消息从 PostgreSQL 重定向到刚刚创建的日志文件:

local0.*     /var/log/postgresql.log

不要忘记重新启动 syslogd 来应用您的更改:

kill -HUP `cat /var/run/syslog.pid`

答案2

@taro 的答案是正确的方法,但不幸的是,添加一个过滤器local0.* /var/log/postgresql.log会将所有 syslog local0 定向消息重定向到/var/log/postgresql.log,包括来自其他应用程序和守护进程的输出。

正确的答案是添加特定的应用程序过滤器/etc/syslog.conf或在中创建特定于 postgres 的 syslog 指令文件/etc/syslog.d/postgres.conf/usr/local/etc/syslog.d/postgres.conf您可能需要/usr/local/etc/syslog.d先创建目录)。

如果采用第一种方法,则需要将以下行添加到/etc/syslog.conf

postgres.*  /var/log/postgresql.log

如果采用第二种方法(推荐),您可以postgres.conf在其中一个syslog.d目录中创建一个新文件,其中包含以下内容:

!postgres
*.*     /var/log/postgresql.log

相关内容