如何启用日志记录所有执行的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。
什么好主意吗?
如何启用日志记录所有执行的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。
什么好主意吗?
当前回答
SELECT set_config('log_statement', 'all', true);
具有相应权限的用户可以使用以上查询后连接。这将影响日志记录,直到会话结束。
其他回答
将log_statement设置为all:
错误报告和日志记录- log_statement
为了获得运行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/中找到今天的日志
编辑/etc/postgresql/9.3/main/postgresql.conf文件,修改如下。
注意:如果你没有找到postgresql.conf文件,那么在终端中输入$locate postgresql.conf即可
#log_directory = 'pg_log'到log_directory = 'pg_log' # log_filename = ' postgresql - Y % % m - H % d_ % % m % S.log”log_filename =“postgresql - Y % % m - H % d_ % % m % S.log” #log_statement = 'none'到log_statement = 'all' #logging_collector = off到logging_collector = on 可选:SELECT set_config('log_statement', 'all', true); sudo /etc/init.D /postgresql restart或sudo service postgresql restart 火灾查询在postgresql选择2+2 在/var/lib/ pg_sql /9.2/data/pg_log/中查找当前日志
日志文件在一段时间内会增长很多,可能会杀死您的机器。为了安全起见,编写一个bash脚本,删除日志并重新启动postgresql服务器。
谢谢@paul, @Jarret Hardie, @Zoltán, @Rix Beck, @Latif Premani
在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”的新视图。在这个视图中,您可以看到所有已执行的查询。
你还应该设置这个参数来记录每条语句:
log_min_duration_statement = 0