85

我的计算机上有一个 PostgreSQL 数据库,并且我有一个在其上运行查询的应用程序。

如何查看在我的数据库上运行了哪些查询?

我使用 Linux 计算机和 pgadmin。

4

5 回答 5

80

开启服务器日志:

log_statement = all

这将记录对数据库服务器的每次调用。

我不会log_statement = all在生产服务器上使用。产生巨大的日志文件。
关于日志记录参数的手册:

log_statement( enum)

控制记录哪些 SQL 语句。有效值为none(off)、ddlmodall(所有语句)。[...]

重置log_statement参数需要服务器重新加载 ( SIGHUP)。不需要重新启动。阅读有关如何设置参数的手册

不要将服务器日志与 pgAdmin 的日志混淆。两种不同的东西!

如果您有权访问文件(远程服务器可能不是这种情况)并正确设置,您还可以查看 pgAdmin 中的服务器日志文件。在 pgadmin III 中,查看:Tools -> Server status. 该选项已在 pgadmin4 中删除。

vim我更喜欢使用(或您选择的任何编辑器/阅读器)阅读服务器日志文件。

于 2011-11-21T07:10:38.507 回答
72

与日志记录技术相关时,PostgreSql 非常先进

日志存储在Installationfolder/data/pg_log folder. 日志设置放在postgresql.conf文件中。

日志格式通常设置为stderr. 但推荐使用 CSV 日志格式。为了启用 CSV 格式更改

log_destination = 'stderr,csvlog'   
logging_collector = on

为了记录所有查询,对于新安装非常有用,设置 min。查询的执行时间

log_min_duration_statement = 0

为了查看数据库上的活动查询,请使用

SELECT * FROM pg_stat_activity

记录特定查询设置查询类型

log_statement = 'all'           # none, ddl, mod, all

有关日志查询的更多信息,请参阅PostgreSql 日志

于 2011-11-21T08:14:32.853 回答
6

我在 brew 的 mac 安装上找到了 /usr/local/var/log/postgres.log 的日志文件。

于 2017-04-30T22:38:59.780 回答
2

在使用带有 postgres 10.6 的Django时,默认情况下启用了日志记录,我能够简单地执行以下操作:

tail -f /var/log/postgresql/*

Ubuntu 18.04、django 2+、python3+

于 2018-12-12T05:19:34.143 回答
1

如果使用此日志目录名称在 postgresql.conf 中启用了日志配置,您可以在 pg_log 文件夹中看到。

于 2018-12-12T14:47:30.567 回答