设置日志记录内容--log_statement:none, ddl, mod, and all 。
None表示不记录。
ddl记录所有数据定义命令,比如CREATE,ALTER,和DROP语句。
mod记录所有ddl语句,加上数据修改语句INSERT,UPDATE等。
all记录所有执行的语句,将此配置设置为all可跟踪整个数据库执行的SQL语句,但会对数据库性能产生较大影响,生产环境不建议配置此值。
(1) 将log_statement设置为none,将不记录数据库的任何操作。
(2) 将log_statement设置为ddl
highgo=#show log_statement;
log_statement
---------------
none
(1row)
highgo=#alter system set log_statement = ddl;
ALTERSYSTEM
highgo=#\q
[highgo@sourcedbdata]$ pg_ctl reload
serversignaled
[highgo@sourcedbdata]$ psql
psql(3.0.2)
Type"help" for help.
highgo=#show log_statement;
log_statement
---------------
ddl
(1row)
执行如下操作:
highgo=#create table test (id int);
CREATETABLE
highgo=#insert into test values (1);
INSERT0 1
highgo=#update test set id=2 where id=1;
UPDATE1
highgo=#delete from test where id=1;
DELETE0
highgo=#select * from test;
id
----
2
(1row)
日志记录内容如下:
日志: 语句: create table test(id int);
(3) 将log_statement设置为mode
highgo=#alter system set log_statement = mod;
ALTERSYSTEM
highgo=#\q
[highgo@sourcedbdata]$ pg_ctl reload
serversignaled
[highgo@sourcedbdata]$ psql
psql(3.0.2)
Type"help" for help.
highgo=#show log_statement;
log_statement
---------------
mod
(1row)
执行如下操作:
highgo=#drop table test;
DROPTABLE
highgo=#create table test (id int);
CREATETABLE
highgo=#insert into test values (1);
INSERT0 1
highgo=#update test set id=2 where id=1;
UPDATE1
highgo=#delete from test where id=1;
DELETE0
highgo=# select * from test;
id
----
2
(1row)
日志记录如下:
日志: 语句: alter system setlog_statement = mod;
日志: 接收到 SIGHUP, 重载配置文件
日志: 参数"log_statement"被改为"mod"
日志: 语句: drop table test;
日志: 语句: create table test(id int);
日志: 语句: insert into testvalues (1);
日志: 语句: update test setid=2 where id=1;
日志: 语句: delete from testwhere id=1;
注:此处未记录select查询语句(log_min_duration_statement=-1 此处为默认值)。当同时设置log_statement=’mod’和log_min_duration_statement=0后,也会记录select。
highgo=#alter system set log_statement=mod;
ALTERSYSTEM
highgo=#alter system set log_min_duration_statement=0;
ALTERSYSTEM
highgo=#\q
[highgo@sourcedbdata]$ pg_ctl reload
serversignaled
[highgo@sourcedbdata]$ psql
psql(3.0.2)
Type"help" for help.
highgo=#drop table test;
DROPTABLE
highgo=#create table test (id int);
CREATETABLE
highgo=#insert into test values (1);
INSERT0 1
highgo=#update test set id=2 where id=1;
UPDATE1
highgo=#delete from test where id=1;
DELETE0
highgo=#select * from test;
id
----
2
(1row)
日志记录如下:
日志: 参数"log_statement"被改为"mod"
日志: 接收到 SIGHUP, 重载配置文件
日志: 参数"log_min_duration_statement"被改为"0"
日志: 语句: drop table test;
日志: 执行时间: 8.179 ms
日志: 语句: create table test(id int);
日志: 执行时间: 6.478 ms
日志: 语句: insert into testvalues (1);
日志: 执行时间: 0.691 ms
日志: 语句: update test setid=2 where id=1;
日志: 执行时间: 4.671 ms
日志: 语句: delete from testwhere id=1;
日志: 执行时间: 0.212 ms
日志: 执行时间: 0.126 ms 语句: select * from test;
注:此时记录了select语句。
(4) 将log_statement设置为all
highgo=#alter system set log_statement= all;
错误: 语法错误 在"all" 或附近的
LINE1: alter system set log_statement= all;
^
highgo=#alter system set log_statement= 'all'; --此处需加双引号
ALTERSYSTEM
highgo=#\q
[highgo@sourcedbdata]$ pg_ctl reload
serversignaled
[highgo@sourcedbdata]$ psql
psql(3.0.2)
Type"help" for help.
highgo=#show log_statement;
log_statement
---------------
all
(1row)
注:此时log_min_duration_statement=-1。
执行如下操作:
highgo=#drop table test;
DROPTABLE
highgo=#create table test (id int);
CREATETABLE
highgo=#insert into test values (1);
INSERT0 1
highgo=#update test set id=2 where id=1;
UPDATE1
highgo=#delete from test where id=1;
DELETE0
highgo=#select * from test;
id
----
2
(1row)
日志记录如下:
语句: alter system set log_statement= all;
日志: 语句: alter system setlog_statement= 'all';
日志: 接收到 SIGHUP, 重载配置文件
日志: 参数"log_statement"被改为"all"
日志: 语句: showlog_statement;
日志: 语句: drop table test;
日志: 语句: create table test(id int);
日志: 语句: insert into testvalues (1);
日志: 语句: update test setid=2 where id=1;
日志: 语句: delete from testwhere id=1;
日志: 语句: select * fromtest;
注:此处记录了select语句。