9

我已经在谷歌上搜索了 2 个多小时,但我真的被这个困住了。
我希望 PostgreSQL(我在 Debian 上使用 8.4 版)开始只记录慢查询。

为此,我在中使用以下配置postgresql.conf

log_destination = 'csvlog'
logging_collector = on
log_min_messages = log
log_min_duration_statement = 1000
log_duration = on
log_line_prefix = '%t '
log_statement = 'all' 

其余配置均采用默认设置(已注释掉)。日志记录有效,但它会记录所有语句,即使是低于 1000 (ms) 阈值的语句。如果我执行“全部显示”,我会看到所有设置都有效。我也尝试重新启动 Postgres。

我希望有人可以帮助我。

4

2 回答 2

23
log_statement = 'all'

指示服务器记录所有语句,就这么简单。此外:

log_duration = on

还指示服务器记录所有语句,包括持续时间信息。
将其更改为:

log_statement = none
log_duration = off

不需要引号。或将它们注释掉并重新加载。然后不会记录任何语句,除了那些运行时间超过 1000 毫秒的语句 - 由以下命令指示:

log_min_duration_statement = 1000

一切都在优秀的手册中。

于 2011-12-08T01:43:49.717 回答
0

应该:

log_destination = 'csvlog'
logging_collector = on
log_min_duration_statement = 1000
log_line_prefix = '%t %p %r %d %u '### more context
log_statement = 'ddl' ### log schema changes 
于 2011-12-07T14:26:22.867 回答