类型: | enum |
默认: | none |
上下文: | superuser |
重新开始: | false |
值: | [none, ddl, mod, all] |
控制哪些 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
(或更低)来记录这种语句。
建议 [EN]
For exhaustive performance analysis on test systems, set to 'all'. Most production setups will just want to use 'ddl' to make sure to record database-altering actions, but very secure setups may want to use 'mod' or even 'all'. Can produce a lot of log volume.
在 StackOverflow
在 pgsql-hackers
- Re: Add test module for verifying backtrace functionality
- Re: Test slots invalidations in 035_standby_logical_decoding.pl only if dead rows are removed
- [PATCH] Add log_transaction setting
- BUG: Former primary node might stuck when started as a standby
- Re: filesystem full during vacuum - space recovery issues