如何启用日志记录所有执行的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。
什么好主意吗?
当前回答
你还应该设置这个参数来记录每条语句:
log_min_duration_statement = 0
其他回答
你还应该设置这个参数来记录每条语句:
log_min_duration_statement = 0
在data/postgresql.conf文件中,将log_statement设置更改为“all”。
Edit
看看你的新信息,我想说可能还有其他一些设置需要验证:
确保您已经打开了log_destination变量 确保您打开了logging_collector 还要确保log_directory目录已经存在于data目录中,并且postgres用户可以对其进行写操作。
动态地,我们可以用两种方式启用/禁用日志记录
更改DB中的全局变量并重新加载配置 a)设置log_statement = 'all';或者设置log_min_duration_statement = 0; B) select pg_reload_conf(); 从Linux命令行,编辑postgres配置文件,修改日志相关参数 Log_min_duration_statement = 0 Log_statement = 'all' 重新加载配置文件 Su - postgres /usr/bin/pg_ctl重载
在这两种情况下,我们都不应该重新启动Postgres。我们可以通过配置重新加载动态启用/禁用日志记录。
我希望这对你有所帮助。
在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”的新视图。在这个视图中,您可以看到所有已执行的查询。
我试图在一些postgres配置文件中设置log_statement,但实际上该文件没有被我们的postgres读取。
我确认使用请求:
select *
from pg_settings
[...]
log_statement none # That was not the value i was expected for !!!
我用这种方式https://stackoverflow.com/a/41912295/2294168
command: postgres -c config_file=/etc/postgresql.conf