pg_stat_log
按后端类型、数据库、用户、日志级别与 SQLSTATE 统计 PostgreSQL 日志消息。
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_stat_log | 0.1 | STAT | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 6040 | pg_stat_log | 否 | 是 | 是 | 是 | 否 | 是 | - |
| 相关扩展 | pg_stat_statements pg_stat_monitor pg_stat_plans |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 0.1 | 1817161514 | pg_stat_log | - |
| RPM | PGDG | 0.1 | 1817161514 | pg_stat_log_$v | - |
| DEB | PGDG | 0.1 | 1817161514 | postgresql-$v-stat-log | - |
安装
您可以直接安装 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;
用法
来源:README,SQL objects,control 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_type、database_oid、database_name、user_oid、user_name、elevel、sqlerrcode、sqlerrcode_name、count。
常用查询
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_entries、num_entries、n_dropped、stats_reset。如果 n_dropped 持续增长,应增大 pg_stat_log.max_entries。
配置
设置项包括 pg_stat_log.enabled、pg_stat_log.min_error_level、pg_stat_log.max_entries。
emit_log_hook 只能看到真正进入服务器日志的消息,因此 log_min_messages 是可统计消息的下限。