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

log_statement参数

许招
2023-12-01

作者:瀚高PG实验室 (Highgo PG Lab)- 天蝎座

log_statement参数控制记录哪些SQL语句。有效值是none(off),ddl,mod和all(所有语句)。
ddl记录所有数据定义语句,例如CREATE,ALTER和DROP语句。
mod记录所有ddl语句,以及数据修改语句,如INSERT,UPDATE,DELETE,TRUNCATE和COPY FROM。
PREPARE,EXECUTE和EXPLAIN如果包含的命令是适当的类型,则也会记录ANALYZE语句。对于使用扩展查询协议的客户端,在收到执行消息时会发生日志记录,并且包含绑定参数的值(使任何嵌入的单引号标记翻倍)。

默认值是none。只有超级用户可以更改此设置。

注意:即使使用log_statement = all设置,也不会记录包含简单语法错误的语句,因为只有在完成基本分析以确定语句类型后才会发出日志消息。在扩展查询协议的情况下,该设置同样不记录在执行阶段之前(即,在分析或计划期间)失败的语句。将log_min_error_statement设置为ERROR(或更低)以记录此类语句。

postgres=# show log_statement;
 log_statement
---------------
 ddl
(1 row)

postgres=# alter user zx encrypted password 'zx';
ALTER ROLE


2018-04-15 22:59:30.959 EDT,"postgres","postgres",18398,"[local]",5ad41167.47de,4,"idle",2018-04-15 22:58:47 EDT,2/8,0,LOG,00000,"statement: alter user zx encrypted password 'zx';",,,,,,,,,"psql"

可以进行会话级别的修改:

postgres=# set log_statement = none;
SET
postgres=# show log_statement;
 log_statement
---------------
 none
(1 row)

这种情况下修改用户密码,日志中不会再记录该操作:

postgres=# alter user zx encrypted password 'zx123';
ALTER ROLE
 类似资料: