如何启用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。
有任何想法吗?
#1楼
SELECT set_config('log_statement', 'all', true);
具有相应的用户权限可以在连接后使用上面的查询。 这将影响日志记录,直到会话结束。
#2楼
只是为了获得运行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/pgsql/9.2/data/pg_log/
#3楼
您还需要在PostgreSQL中添加这些行并重新启动服务器:
log_directory = 'pg_log'
log_filename = 'postgresql-dateformat.log'
log_statement = 'all'
logging_collector = on
#4楼
+1以上答案。 我使用以下配置
log_line_prefix = '%t %c %u ' # time sessionid user
log_statement = 'all'
#5楼
编辑/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
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3178397