如何启用日志记录所有执行的SQL PostgreSQL 8.3?

已编辑(更多信息) 我修改了这几行:

log_directory = 'pg_log'                    
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'all'

重启PostgreSQL服务…但是没有创建日志… 我用的是Windows Server 2003。

什么好主意吗?


当前回答

你还应该设置这个参数来记录每条语句:

log_min_duration_statement = 0

其他回答

在data/postgresql.conf文件中,将log_statement设置更改为“all”。


Edit

看看你的新信息,我想说可能还有其他一些设置需要验证:

确保您已经打开了log_destination变量 确保您打开了logging_collector 还要确保log_directory目录已经存在于data目录中,并且postgres用户可以对其进行写操作。

将log_statement设置为all:

错误报告和日志记录- log_statement

在postgresql中有一个扩展。它的名字是“pg_stat_statements”。https://www.postgresql.org/docs/9.4/pgstatstatements.html

基本上你需要稍微修改一下postgresql.conf文件:

shared_preload_libraries= 'pg_stat_statements'
pg_stat_statements.track = 'all'

然后你必须登录DB并运行以下命令:

create extension pg_stat_statements;

它将创建名为“pg_stat_statements”的新视图。在这个视图中,您可以看到所有已执行的查询。

+1到以上答案。我使用以下配置

log_line_prefix = '%t %c %u ' # time sessionid user
log_statement = 'all'

为了获得运行PostgreSQL 9.2的CentOS 6.4 (Red Hat 4.4.7-3)的更多详细信息,请参考此网页上的说明:

在/var/lib/pgsql/9.2/data/postgresql.conf中设置log_statement = 'all'和log_min_error_statement = error。 重新加载PostgreSQL配置。对我来说,这是通过运行/usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/来完成的。 在/var/lib/ pg_sql /9.2/data/pg_log/中找到今天的日志