首页 文章

如何记录PostgreSQL查询?

提问于
浏览
319

如何启用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 .

有任何想法吗?

8 回答

  • 29

    1到上面的答案 . 我使用以下配置

    log_line_prefix = '%t %c %u ' # time sessionid user
    log_statement = 'all'
    
  • 73

    您还需要在PostgreSQL中添加这些行并重新启动服务器:

    log_directory = 'pg_log'                    
    log_filename = 'postgresql-dateformat.log'
    log_statement = 'all'
    logging_collector = on
    
  • 34

    编辑 /etc/postgresql/9.3/main/postgresql.conf ,并按如下所示更改行 .

    Note :如果找不到 postgresql.conf 文件,只需在终端中输入 $locate postgresql.conf

    • #log_directory = 'pg_log' to log_directory = 'pg_log'

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

    • #log_statement = 'none' to log_statement = 'all'

    • #logging_collector = off to logging_collector = on

    • OptionalSELECT set_config('log_statement', 'all', true);

    • sudo /etc/init.d/postgresql restart or sudo service postgresql restart

    • postgresql中的fire查询 select 2+2

    • 查找当前登录 /var/lib/pgsql/9.2/data/pg_log/

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

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

  • 406

    data/postgresql.conf 文件中,将 log_statement 设置更改为 'all' .


    Edit

    查看您的新信息,我会说可能还有一些其他设置需要验证:

    • 确保已打开 log_destination 变量

    • 确保你打开 logging_collector

    • 还要确保 log_directory 目录中已存在 log_directory 目录,并且postgres用户可以写入该目录 .

  • 24

    仅供参考:其他解决方案只会记录默认数据库中的语句 - 通常是 postgres - 以记录其他语句;从解决方案开始;然后:

    ALTER DATABASE your_database_name
    SET log_statement = 'all';
    

    参考:https://serverfault.com/a/376888 / log_statement

  • 16

    只是为了获得运行PostgreSQL 9.2的CentOS 6.4(Red Hat 4.4.7-3)的更多细节,基于发现的指令on this web page

    • /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/

  • 19

    log_statement 设为 all

    Error Reporting and Logging - log_statement

  • 9
    SELECT set_config('log_statement', 'all', true);
    

    具有相应的用户权限可以在连接后使用上面的查询 . 这将影响记录直到会话结束 .

相关问题