如何启用PostgreSQL 8.3执行的所有SQL的日志记录?
编辑(更多信息) 我更改了这些行:
log_directory = 'pg_log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_statement = 'all'
并重新启动PostgreSQL服务...但没有创建日志...我正在使用Windows Server 2003.
有任何想法吗?
在您的data/postgresql.conf
文件中,将log_statement
设置更改为'all'
.
编辑
查看您的新信息,我会说可能还有一些其他设置需要验证:
确保你已打开log_destination
变量
确保你打开 logging_collector
还要确保log_directory
目录中已存在该data
目录,并且postgres用户可以写入该目录.
编辑您的/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-%d_%H%M%S.log'
至 log_filename = 'postgresql-%Y-%m-%d_%H%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中的fire查询 select 2+2
查找当前登录 /var/lib/pgsql/9.2/data/pg_log/
日志文件往往会在一段时间内增长很多,并且可能会杀死您的计算机.为了您的安全,请编写一个bash脚本,该脚本将删除日志并重新启动postgresql服务器.
谢谢@paul,@ Jaret Hardie,@Zoltán,@ Rix Beck,@ Latif Premani
SELECT set_config('log_statement', 'all', true);
具有相应的用户权限可以在连接后使用上面的查询.这将影响日志记录,直到会话结束.
您还需要在PostgreSQL中添加这些行并重新启动服务器:
log_directory = 'pg_log' log_filename = 'postgresql-dateformat.log' log_statement = 'all' logging_collector = on
仅供参考:其他解决方案只会记录默认数据库中的语句 - 通常是postgres
记录其他语句; 从解决方案开始; 然后:
ALTER DATABASE your_database_name SET log_statement = 'all';
参考:https://serverfault.com/a/376888 /log_statement
设置log_statement
为all
:
错误报告和记录 - log_statement
+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)的更多细节,基于此网页上的说明:
设置(取消注释)log_statement = 'all'
并log_min_error_statement = error
在/var/lib/pgsql/9.2/data/postgresql.conf
.
重新加载PostgreSQL配置.对我来说,这是通过跑步来完成的/usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/
.
查找今天的登录信息 /var/lib/pgsql/9.2/data/pg_log/