pg_stat_log

按后端类型、数据库、用户、日志级别与 SQLSTATE 统计 PostgreSQL 日志消息。

概览

扩展包名版本分类许可证语言
pg_stat_log0.1STATPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
6040pg_stat_log-
相关扩展pg_stat_statements pg_stat_monitor pg_stat_plans

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG0.11817161514pg_stat_log-
RPMPGDG0.11817161514pg_stat_log_$v-
DEBPGDG0.11817161514postgresql-$v-stat-log-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
el8.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
el9.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
el9.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
el10.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
el10.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
d12.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
d12.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
u26.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISS
u26.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISS

安装

您可以直接安装 pg_stat_log 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_stat_log;          # 当前活跃 PG 版本安装
pig ext install -y pg_stat_log -v 18  # PG 18
dnf install -y pg_stat_log_18       # PG 18
apt install -y postgresql-18-stat-log   # PG 18

预加载配置

shared_preload_libraries = '$libdir/pg_stat_log';

创建扩展

CREATE EXTENSION pg_stat_log;

用法

来源:READMESQL objectscontrol file

pg_stat_log 收集 PostgreSQL 日志消息的累积统计。它挂接 emit_log_hook,按后台进程类型、数据库、用户、严重级别、SQLSTATE 和 SQLSTATE 条件名统计日志消息。

启用

pg_stat_log 需要 PostgreSQL 18 或更新版本,并且必须预加载:

shared_preload_libraries = 'pg_stat_log'

重启 PostgreSQL 后创建扩展:

CREATE EXTENSION pg_stat_log;

查看统计

SELECT *
FROM pg_stat_log
ORDER BY count DESC;

视图包含 backend_typedatabase_oiddatabase_nameuser_oiduser_nameelevelsqlerrcodesqlerrcode_namecount

常用查询

SELECT elevel, sqlerrcode, sqlerrcode_name, sum(count) AS total
FROM pg_stat_log
GROUP BY elevel, sqlerrcode, sqlerrcode_name
ORDER BY total DESC
LIMIT 10;

SELECT backend_type, elevel, sqlerrcode_name, count
FROM pg_stat_log
WHERE backend_type <> 'client backend'
ORDER BY count DESC;

重置与容量

SELECT pg_stat_log_reset();
SELECT * FROM pg_stat_log_info();

pg_stat_log_info() 返回 max_entriesnum_entriesn_droppedstats_reset。如果 n_dropped 持续增长,应增大 pg_stat_log.max_entries

配置

设置项包括 pg_stat_log.enabledpg_stat_log.min_error_levelpg_stat_log.max_entries

emit_log_hook 只能看到真正进入服务器日志的消息,因此 log_min_messages 是可统计消息的下限。


最后修改 2026-07-02: extension update 2026-07-02 (d4da20c)