如何loggingPostgreSQL查询?
如何启用由PostgreSQL 8.3执行的所有SQL的logging?
编辑(更多信息)我改变了这些行:
log_directory = 'pg_log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_statement = 'all'
并重新启动PostgreSQL服务…但没有创build日志…我正在使用Windows Server 2003。
有任何想法吗?
在您的data/postgresql.conf文件中,将log_statement设置更改为'all' 。
编辑
看看你的新信息,我想说可能有一些其他的设置来validation:
- 确保你打开了
log_destinationvariables - 确保你打开了
logging_collector - 还要确保
pg_log目录已经存在于data目录中,并且postgres用户可以写入它。
编辑你的/etc/postgresql/9.3/main/postgresql.conf ,如下改变行。
注意 :如果您没有findpostgresql.conf文件,只需在terminal中键入$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 = offlogging_collector = on -
可选 :
SELECT set_config('log_statement', 'all', true); -
sudo /etc/init.d/postgresql restart或sudo service postgresql restart -
在postgresql的消息查询
select 2+2 -
查找当前日志
/var/lib/pgsql/9.2/data/pg_log/
日志文件往往会增长很多,并可能会杀死你的机器。 为了您的安全,请编写一个bash脚本来删除日志并重新启动postgresql服务器。
谢谢@paul,@Jarret Hardie,@Zoltán,@Rix Beck,@Latif Premani
SELECT set_config('log_statement', 'all', true);
连接后有相应的用户权限可以使用上面的查询。 这将影响日志,直到会话结束。
将log_statement设置为all :
错误报告和日志logging – log_statement
您还需要在PostgreSQL中添加这些行并重新启动服务器:
log_directory = 'pg_log' log_filename = 'postgresql-dateformat.log' log_statement = 'all' logging_collector = on
+1以上的答案。 我使用以下configuration
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。 - 重新加载PostgreSQLconfiguration。 对我来说,这是通过运行
/usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/。 - 查找今天的日志
/var/lib/pgsql/9.2/data/pg_log/
仅供参考:其他解决scheme将只logging来自默认数据库的语句(通常是postgres以logging其他数据; 从他们的解决办法开始 然后:
ALTER DATABASE your_database_name SET log_statement = 'all';
参考: https : log_statement / log_statement