PostgreSQL的日志在哪里?

19

我正在使用DBeaver连接Postgres数据库,希望通过DBeaver访问日志。

我运行以下命令查找日志位置,并得到了stderr作为位置。

show log_destination ;

我该如何在DB应用程序中访问那个文件?顺便说一下,我想要的是所有日志,而不是来自DBeaver的日志。

4个回答

23

在最近的PostgreSQL版本中,这很简单:

SELECT  pg_current_logfile();

对于旧版本,请按照以下步骤进行:

  • 确认日志收集器已启动:

SHOW logging_collector;
  • 如果没有, 日志的位置取决于 PostgreSQL 是如何启动的。

  • 如果是, 日志将在 log_directory 中:

SHOW log_directory;

如果这是相对路径,那么它是相对于 PostgreSQL 数据目录的。

由于日志文件位于数据库服务器上,您可能无法使用客户端工具访问它。


1
我该如何读取这个日志? - Telion
@Telion 你需要访问数据库服务器机器的shell。在托管的数据库中,可能会有其他设施。 - Laurenz Albe
1
函数 pg_current_logfile() 给了我文件名,然后我就可以用 find / -type f -name "postgresql-Tue.log" 在 CentOS 7 服务器上找到它,路径为 /var/lib/pgsql/14/data/log/postgresql-Tue.log - CIRCLE

10
在Ubuntu中,查询日志位于/var/log/postgresql目录下。详细信息请参阅此处

9

您可以运行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 Botor

0
在Mac上使用brew安装Postgres时,你可以在这里找到它:/opt/homebrew/var/log/postgres.log

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接