我正在使用DBeaver连接Postgres数据库,希望通过DBeaver访问日志。
我运行以下命令查找日志位置,并得到了stderr作为位置。
show log_destination ;
我该如何在DB应用程序中访问那个文件?顺便说一下,我想要的是所有日志,而不是来自DBeaver的日志。
我正在使用DBeaver连接Postgres数据库,希望通过DBeaver访问日志。
我运行以下命令查找日志位置,并得到了stderr作为位置。
show log_destination ;
我该如何在DB应用程序中访问那个文件?顺便说一下,我想要的是所有日志,而不是来自DBeaver的日志。
在最近的PostgreSQL版本中,这很简单:
SELECT pg_current_logfile();
对于旧版本,请按照以下步骤进行:
确认日志收集器已启动:
SHOW logging_collector;
如果没有, 日志的位置取决于 PostgreSQL 是如何启动的。
如果是, 日志将在 log_directory
中:
SHOW log_directory;
如果这是相对路径,那么它是相对于 PostgreSQL 数据目录的。
由于日志文件位于数据库服务器上,您可能无法使用客户端工具访问它。
您可以运行pg_lsclusters
命令。
> pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
11 main 5432 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
SELECT pg_current_logfile();
返回空值时,这对我很有效。 - Konrad Botorbrew
安装Postgres时,你可以在这里找到它:/opt/homebrew/var/log/postgres.log
。
pg_current_logfile()
给了我文件名,然后我就可以用find / -type f -name "postgresql-Tue.log"
在 CentOS 7 服务器上找到它,路径为/var/lib/pgsql/14/data/log/postgresql-Tue.log
。 - CIRCLE