当前位置: 首页 > 工具软件 > mod_log_sql > 使用案例 >

Postgres设置pg_log日志记录内容

许兴文
2023-12-01

设置日志记录内容

设置日志记录内容--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语句。
 类似资料: