如何启用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到上面的答案 . 我使用以下配置
log_line_prefix = '%t %c %u ' # time sessionid user log_statement = 'all'
您还需要在PostgreSQL中添加这些行并重新启动服务器:
log_directory = 'pg_log' log_filename = 'postgresql-dateformat.log' log_statement = 'all' logging_collector = on
编辑 /etc/postgresql/9.3/main/postgresql.conf ,并按如下所示更改行 .
/etc/postgresql/9.3/main/postgresql.conf
Note :如果找不到 postgresql.conf 文件,只需在终端中输入 $locate postgresql.conf
postgresql.conf
$locate postgresql.conf
#log_directory = 'pg_log' to log_directory = 'pg_log'
#log_directory = 'pg_log'
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_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
#log_statement = 'none' to log_statement = 'all'
#log_statement = 'none'
log_statement = 'all'
#logging_collector = off to logging_collector = on
#logging_collector = off
logging_collector = on
Optional : SELECT set_config('log_statement', 'all', true);
SELECT set_config('log_statement', 'all', true);
sudo /etc/init.d/postgresql restart or sudo service postgresql restart
sudo /etc/init.d/postgresql restart
sudo service postgresql restart
postgresql中的fire查询 select 2+2
select 2+2
查找当前登录 /var/lib/pgsql/9.2/data/pg_log/
/var/lib/pgsql/9.2/data/pg_log/
日志文件往往会在一段时间内增长很多,并且可能会杀死您的计算机 . 为了您的安全,请编写一个bash脚本,它将删除日志并重新启动postgresql服务器 .
谢谢@paul,@ Jarret Hardie,@Zoltán,@ Rix Beck,@ Latif Premani
在 data/postgresql.conf 文件中,将 log_statement 设置更改为 'all' .
data/postgresql.conf
log_statement
'all'
Edit
查看您的新信息,我会说可能还有一些其他设置需要验证:
确保已打开 log_destination 变量
log_destination
确保你打开 logging_collector
logging_collector
还要确保 log_directory 目录中已存在 log_directory 目录,并且postgres用户可以写入该目录 .
log_directory
仅供参考:其他解决方案只会记录默认数据库中的语句 - 通常是 postgres - 以记录其他语句;从解决方案开始;然后:
postgres
ALTER DATABASE your_database_name SET log_statement = 'all';
参考:https://serverfault.com/a/376888 / log_statement
只是为了获得运行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 .
/var/lib/pgsql/9.2/data/postgresql.conf
log_min_error_statement = error
重新加载PostgreSQL配置 . 对我来说,这是通过运行 /usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/ 来完成的 .
/usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/
今天登录 /var/lib/pgsql/9.2/data/pg_log/
将 log_statement 设为 all :
all
Error Reporting and Logging - log_statement
具有相应的用户权限可以在连接后使用上面的查询 . 这将影响记录直到会话结束 .
8 回答
1到上面的答案 . 我使用以下配置
您还需要在PostgreSQL中添加这些行并重新启动服务器:
编辑
/etc/postgresql/9.3/main/postgresql.conf
,并按如下所示更改行 .Note :如果找不到
postgresql.conf
文件,只需在终端中输入$locate postgresql.conf
#log_directory = 'pg_log'
tolog_directory = 'pg_log'
#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
tolog_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
#log_statement = 'none'
tolog_statement = 'all'
#logging_collector = off
tologging_collector = on
Optional :
SELECT set_config('log_statement', 'all', true);
sudo /etc/init.d/postgresql restart
orsudo 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
在
data/postgresql.conf
文件中,将log_statement
设置更改为'all'
.Edit
查看您的新信息,我会说可能还有一些其他设置需要验证:
确保已打开
log_destination
变量确保你打开
logging_collector
还要确保
log_directory
目录中已存在log_directory
目录,并且postgres用户可以写入该目录 .仅供参考:其他解决方案只会记录默认数据库中的语句 - 通常是
postgres
- 以记录其他语句;从解决方案开始;然后:参考:https://serverfault.com/a/376888 / log_statement
只是为了获得运行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/
将
log_statement
设为all
:Error Reporting and Logging - log_statement
具有相应的用户权限可以在连接后使用上面的查询 . 这将影响记录直到会话结束 .