log_fdw

访问PostgreSQL日志文件的FDW

概览

扩展包名版本分类许可证语言
log_fdw1.4FDWApache-2.0C
ID扩展名BinLibLoadCreateTrustReloc模式
8810log_fdw-
相关扩展pg_sqlog pgaudit file_fdw auto_explain pgauditlogtofile logerrors wrappers multicorn

PG18 fixed by vonng

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.41817161514log_fdw-
RPMPIGSTY1.41817161514log_fdw_$v-
DEBPIGSTY1.41817161514postgresql-$v-log-fdw-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
d13.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
u22.x86_64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
u22.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
u24.x86_64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
u24.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4

构建

您可以使用 pig build 命令构建 log_fdw 扩展的 DEB 包:

pig build pkg log_fdw         # 构建 DEB 包

安装

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

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

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

pig install log_fdw;          # 当前活跃 PG 版本安装
pig ext install -y log_fdw -v 18  # PG 18
pig ext install -y log_fdw -v 17  # PG 17
pig ext install -y log_fdw -v 16  # PG 16
pig ext install -y log_fdw -v 15  # PG 15
pig ext install -y log_fdw -v 14  # PG 14
dnf install -y log_fdw_18       # PG 18
dnf install -y log_fdw_17       # PG 17
dnf install -y log_fdw_16       # PG 16
dnf install -y log_fdw_15       # PG 15
dnf install -y log_fdw_14       # PG 14
apt install -y postgresql-18-log-fdw   # PG 18
apt install -y postgresql-17-log-fdw   # PG 17
apt install -y postgresql-16-log-fdw   # PG 16
apt install -y postgresql-15-log-fdw   # PG 15
apt install -y postgresql-14-log-fdw   # PG 14

创建扩展

CREATE EXTENSION log_fdw;

用法

log_fdw: 访问 Postgres 日志文件的外部数据包装器

创建服务器

CREATE EXTENSION log_fdw;

CREATE SERVER log_fdw_server FOREIGN DATA WRAPPER log_fdw;

列出可用日志文件

SELECT * FROM list_postgres_log_files();

返回 PostgreSQL 日志目录中每个日志文件的文件名和大小。

为 CSV 日志创建外部表

SELECT * FROM create_foreign_table_for_log_file(
  'postgresql_2024_01_15_csv',   -- 外部表名
  'log_fdw_server',               -- 服务器名
  'postgresql-2024-01-15.csv'     -- 日志文件名
);

为纯文本日志创建外部表

SELECT * FROM create_foreign_table_for_log_file(
  'postgresql_2024_01_15_log',
  'log_fdw_server',
  'postgresql-2024-01-15.log'
);

查询日志数据

-- 查询 CSV 格式日志(结构化列)
SELECT log_time, error_severity, message
FROM postgresql_2024_01_15_csv
WHERE error_severity = 'ERROR'
ORDER BY log_time DESC
LIMIT 20;

-- 查询纯文本日志
SELECT * FROM postgresql_2024_01_15_log LIMIT 10;

授权非超级用户访问

只有超级用户可以创建该扩展,但可以授予访问权限:

GRANT pg_monitor TO monitoring_user;
GRANT CREATE ON SCHEMA public TO monitoring_user;
GRANT USAGE ON FOREIGN SERVER log_fdw_server TO monitoring_user;

函数参考

函数描述
list_postgres_log_files()列出可用日志文件及其大小
create_foreign_table_for_log_file(table_name, server_name, file_name)从日志文件创建外部表

最后修改 2026-03-14: update extension metadata (953cbd0)