如何记录PostgreSQL查询?

纵然是瞬间 提交于 2020-02-28 20:38:00

如何启用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)的更多细节,基于此网页上的说明:

  1. /var/lib/pgsql/9.2/data/postgresql.conf设置(取消注释) log_statement = 'all'log_min_error_statement = error
  2. 重新加载PostgreSQL配置。 对我来说,这是通过运行/usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/
  3. 今天登录/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

  1. #log_directory = 'pg_log' log_directory = 'pg_log'

  2. #log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

  3. #log_statement = 'none' log_statement = 'all'

  4. #logging_collector = off logging_collector = on

  5. 可选SELECT set_config('log_statement', 'all', true);

  6. sudo /etc/init.d/postgresql restart sudo service postgresql restart

  7. postgresql中的fire查询select 2+2

  8. /var/lib/pgsql/9.2/data/pg_log/查找当前日志

日志文件往往会在一段时间内增长很多,并且可能会杀死您的计算机。 为了您的安全,请编写一个bash脚本,该脚本将删除日志并重新启动postgresql服务器。

谢谢@paul,@ Jaret Hardie,@Zoltán,@ Rix Beck,@ Latif Premani

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!