log_fdw

log_fdw

log_fdw : foreign-data wrapper for Postgres log file access

Overview

ID Extension Package Version Category License Language
8810
log_fdw
log_fdw
1.4
FDW
Apache-2.0
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d--
No
Yes
No
Yes
no
no
Relationships
See Also
pg_sqlog
pgaudit
file_fdw
auto_explain
pgauditlogtofile
logerrors
wrappers
multicorn

PG18 fixed by vonng

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PIGSTY
1.4
18
17
16
15
14
log_fdw -
RPM
PIGSTY
1.4
18
17
16
15
14
log_fdw_$v -
DEB
PIGSTY
1.4
18
17
16
15
14
postgresql-$v-log-fdw -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
el8.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
el9.x86_64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
el9.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
el10.x86_64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
el10.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
d12.x86_64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
d12.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
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
Package Version OS ORG SIZE File URL
log_fdw_18 1.4 el8.x86_64 pigsty 20.0 KiB log_fdw_18-1.4-2PIGSTY.el8.x86_64.rpm
log_fdw_18 1.4 el8.aarch64 pigsty 20.1 KiB log_fdw_18-1.4-2PIGSTY.el8.aarch64.rpm
log_fdw_18 1.4 el9.x86_64 pigsty 20.2 KiB log_fdw_18-1.4-2PIGSTY.el9.x86_64.rpm
log_fdw_18 1.4 el9.aarch64 pigsty 20.1 KiB log_fdw_18-1.4-2PIGSTY.el9.aarch64.rpm
log_fdw_18 1.4 el10.x86_64 pigsty 20.3 KiB log_fdw_18-1.4-2PIGSTY.el10.x86_64.rpm
log_fdw_18 1.4 el10.aarch64 pigsty 20.3 KiB log_fdw_18-1.4-2PIGSTY.el10.aarch64.rpm
postgresql-18-log-fdw 1.4 d12.x86_64 pigsty 27.4 KiB postgresql-18-log-fdw_1.4-1PIGSTY~bookworm_amd64.deb
postgresql-18-log-fdw 1.4 d12.aarch64 pigsty 27.3 KiB postgresql-18-log-fdw_1.4-1PIGSTY~bookworm_arm64.deb
postgresql-18-log-fdw 1.4 d13.x86_64 pigsty 27.5 KiB postgresql-18-log-fdw_1.4-1PIGSTY~trixie_amd64.deb
postgresql-18-log-fdw 1.4 d13.aarch64 pigsty 27.4 KiB postgresql-18-log-fdw_1.4-1PIGSTY~trixie_arm64.deb
postgresql-18-log-fdw 1.4 u22.x86_64 pigsty 29.2 KiB postgresql-18-log-fdw_1.4-1PIGSTY~jammy_amd64.deb
postgresql-18-log-fdw 1.4 u22.aarch64 pigsty 29.0 KiB postgresql-18-log-fdw_1.4-1PIGSTY~jammy_arm64.deb
postgresql-18-log-fdw 1.4 u24.x86_64 pigsty 28.3 KiB postgresql-18-log-fdw_1.4-1PIGSTY~noble_amd64.deb
postgresql-18-log-fdw 1.4 u24.aarch64 pigsty 28.4 KiB postgresql-18-log-fdw_1.4-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
log_fdw_17 1.4 el8.x86_64 pigsty 20.0 KiB log_fdw_17-1.4-2PIGSTY.el8.x86_64.rpm
log_fdw_17 1.4 el8.aarch64 pigsty 20.1 KiB log_fdw_17-1.4-2PIGSTY.el8.aarch64.rpm
log_fdw_17 1.4 el9.x86_64 pigsty 20.2 KiB log_fdw_17-1.4-2PIGSTY.el9.x86_64.rpm
log_fdw_17 1.4 el9.aarch64 pigsty 20.1 KiB log_fdw_17-1.4-2PIGSTY.el9.aarch64.rpm
log_fdw_17 1.4 el10.x86_64 pigsty 20.3 KiB log_fdw_17-1.4-2PIGSTY.el10.x86_64.rpm
log_fdw_17 1.4 el10.aarch64 pigsty 20.3 KiB log_fdw_17-1.4-2PIGSTY.el10.aarch64.rpm
postgresql-17-log-fdw 1.4 d12.x86_64 pigsty 27.2 KiB postgresql-17-log-fdw_1.4-1PIGSTY~bookworm_amd64.deb
postgresql-17-log-fdw 1.4 d12.aarch64 pigsty 27.1 KiB postgresql-17-log-fdw_1.4-1PIGSTY~bookworm_arm64.deb
postgresql-17-log-fdw 1.4 d13.x86_64 pigsty 27.2 KiB postgresql-17-log-fdw_1.4-1PIGSTY~trixie_amd64.deb
postgresql-17-log-fdw 1.4 d13.aarch64 pigsty 27.2 KiB postgresql-17-log-fdw_1.4-1PIGSTY~trixie_arm64.deb
postgresql-17-log-fdw 1.4 u22.x86_64 pigsty 34.4 KiB postgresql-17-log-fdw_1.4-1PIGSTY~jammy_amd64.deb
postgresql-17-log-fdw 1.4 u22.aarch64 pigsty 34.0 KiB postgresql-17-log-fdw_1.4-1PIGSTY~jammy_arm64.deb
postgresql-17-log-fdw 1.4 u24.x86_64 pigsty 28.1 KiB postgresql-17-log-fdw_1.4-1PIGSTY~noble_amd64.deb
postgresql-17-log-fdw 1.4 u24.aarch64 pigsty 28.2 KiB postgresql-17-log-fdw_1.4-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
log_fdw_16 1.4 el8.x86_64 pigsty 20.0 KiB log_fdw_16-1.4-2PIGSTY.el8.x86_64.rpm
log_fdw_16 1.4 el8.aarch64 pigsty 20.1 KiB log_fdw_16-1.4-2PIGSTY.el8.aarch64.rpm
log_fdw_16 1.4 el9.x86_64 pigsty 20.2 KiB log_fdw_16-1.4-2PIGSTY.el9.x86_64.rpm
log_fdw_16 1.4 el9.aarch64 pigsty 20.2 KiB log_fdw_16-1.4-2PIGSTY.el9.aarch64.rpm
log_fdw_16 1.4 el10.x86_64 pigsty 20.3 KiB log_fdw_16-1.4-2PIGSTY.el10.x86_64.rpm
log_fdw_16 1.4 el10.aarch64 pigsty 20.3 KiB log_fdw_16-1.4-2PIGSTY.el10.aarch64.rpm
postgresql-16-log-fdw 1.4 d12.x86_64 pigsty 27.5 KiB postgresql-16-log-fdw_1.4-1PIGSTY~bookworm_amd64.deb
postgresql-16-log-fdw 1.4 d12.aarch64 pigsty 27.0 KiB postgresql-16-log-fdw_1.4-1PIGSTY~bookworm_arm64.deb
postgresql-16-log-fdw 1.4 d13.x86_64 pigsty 27.6 KiB postgresql-16-log-fdw_1.4-1PIGSTY~trixie_amd64.deb
postgresql-16-log-fdw 1.4 d13.aarch64 pigsty 27.1 KiB postgresql-16-log-fdw_1.4-1PIGSTY~trixie_arm64.deb
postgresql-16-log-fdw 1.4 u22.x86_64 pigsty 34.4 KiB postgresql-16-log-fdw_1.4-1PIGSTY~jammy_amd64.deb
postgresql-16-log-fdw 1.4 u22.aarch64 pigsty 34.1 KiB postgresql-16-log-fdw_1.4-1PIGSTY~jammy_arm64.deb
postgresql-16-log-fdw 1.4 u24.x86_64 pigsty 28.4 KiB postgresql-16-log-fdw_1.4-1PIGSTY~noble_amd64.deb
postgresql-16-log-fdw 1.4 u24.aarch64 pigsty 28.1 KiB postgresql-16-log-fdw_1.4-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
log_fdw_15 1.4 el8.x86_64 pigsty 20.1 KiB log_fdw_15-1.4-2PIGSTY.el8.x86_64.rpm
log_fdw_15 1.4 el8.aarch64 pigsty 20.1 KiB log_fdw_15-1.4-2PIGSTY.el8.aarch64.rpm
log_fdw_15 1.4 el9.x86_64 pigsty 20.2 KiB log_fdw_15-1.4-2PIGSTY.el9.x86_64.rpm
log_fdw_15 1.4 el9.aarch64 pigsty 20.1 KiB log_fdw_15-1.4-2PIGSTY.el9.aarch64.rpm
log_fdw_15 1.4 el10.x86_64 pigsty 20.3 KiB log_fdw_15-1.4-2PIGSTY.el10.x86_64.rpm
log_fdw_15 1.4 el10.aarch64 pigsty 20.3 KiB log_fdw_15-1.4-2PIGSTY.el10.aarch64.rpm
postgresql-15-log-fdw 1.4 d12.x86_64 pigsty 27.6 KiB postgresql-15-log-fdw_1.4-1PIGSTY~bookworm_amd64.deb
postgresql-15-log-fdw 1.4 d12.aarch64 pigsty 27.1 KiB postgresql-15-log-fdw_1.4-1PIGSTY~bookworm_arm64.deb
postgresql-15-log-fdw 1.4 d13.x86_64 pigsty 27.6 KiB postgresql-15-log-fdw_1.4-1PIGSTY~trixie_amd64.deb
postgresql-15-log-fdw 1.4 d13.aarch64 pigsty 27.2 KiB postgresql-15-log-fdw_1.4-1PIGSTY~trixie_arm64.deb
postgresql-15-log-fdw 1.4 u22.x86_64 pigsty 34.2 KiB postgresql-15-log-fdw_1.4-1PIGSTY~jammy_amd64.deb
postgresql-15-log-fdw 1.4 u22.aarch64 pigsty 34.0 KiB postgresql-15-log-fdw_1.4-1PIGSTY~jammy_arm64.deb
postgresql-15-log-fdw 1.4 u24.x86_64 pigsty 28.5 KiB postgresql-15-log-fdw_1.4-1PIGSTY~noble_amd64.deb
postgresql-15-log-fdw 1.4 u24.aarch64 pigsty 28.2 KiB postgresql-15-log-fdw_1.4-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
log_fdw_14 1.4 el8.x86_64 pigsty 20.1 KiB log_fdw_14-1.4-2PIGSTY.el8.x86_64.rpm
log_fdw_14 1.4 el8.aarch64 pigsty 20.1 KiB log_fdw_14-1.4-2PIGSTY.el8.aarch64.rpm
log_fdw_14 1.4 el9.x86_64 pigsty 20.2 KiB log_fdw_14-1.4-2PIGSTY.el9.x86_64.rpm
log_fdw_14 1.4 el9.aarch64 pigsty 20.1 KiB log_fdw_14-1.4-2PIGSTY.el9.aarch64.rpm
log_fdw_14 1.4 el10.x86_64 pigsty 20.3 KiB log_fdw_14-1.4-2PIGSTY.el10.x86_64.rpm
log_fdw_14 1.4 el10.aarch64 pigsty 20.3 KiB log_fdw_14-1.4-2PIGSTY.el10.aarch64.rpm
postgresql-14-log-fdw 1.4 d12.x86_64 pigsty 27.5 KiB postgresql-14-log-fdw_1.4-1PIGSTY~bookworm_amd64.deb
postgresql-14-log-fdw 1.4 d12.aarch64 pigsty 27.1 KiB postgresql-14-log-fdw_1.4-1PIGSTY~bookworm_arm64.deb
postgresql-14-log-fdw 1.4 d13.x86_64 pigsty 27.5 KiB postgresql-14-log-fdw_1.4-1PIGSTY~trixie_amd64.deb
postgresql-14-log-fdw 1.4 d13.aarch64 pigsty 27.1 KiB postgresql-14-log-fdw_1.4-1PIGSTY~trixie_arm64.deb
postgresql-14-log-fdw 1.4 u22.x86_64 pigsty 34.2 KiB postgresql-14-log-fdw_1.4-1PIGSTY~jammy_amd64.deb
postgresql-14-log-fdw 1.4 u22.aarch64 pigsty 34.0 KiB postgresql-14-log-fdw_1.4-1PIGSTY~jammy_arm64.deb
postgresql-14-log-fdw 1.4 u24.x86_64 pigsty 28.4 KiB postgresql-14-log-fdw_1.4-1PIGSTY~noble_amd64.deb
postgresql-14-log-fdw 1.4 u24.aarch64 pigsty 28.1 KiB postgresql-14-log-fdw_1.4-1PIGSTY~noble_arm64.deb

Source

pig build pkg log_fdw;		# build deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

pig install log_fdw;		# install via package name, for the active PG version

pig install log_fdw -v 18;   # install for PG 18
pig install log_fdw -v 17;   # install for PG 17
pig install log_fdw -v 16;   # install for PG 16
pig install log_fdw -v 15;   # install for PG 15
pig install log_fdw -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION log_fdw;

Usage

Syntax:

CREATE EXTENSION log_fdw;
CREATE SERVER log_fdw_server FOREIGN DATA WRAPPER log_fdw;
SELECT * FROM list_postgres_log_files();

Source: README

log_fdw is a PostgreSQL foreign data wrapper for reading PostgreSQL log files through SQL. It provides helper functions to list files in the server log directory and to create foreign tables for individual log files.

Core Functions

The upstream README documents two SQL entry points:

create_foreign_table_for_log_file(table_name text, server_name text, log_file_name text)
list_postgres_log_files()

list_postgres_log_files() is a compatibility wrapper around PostgreSQL core’s pg_ls_logdir().

Basic Workflow

Create the extension and a foreign server:

CREATE EXTENSION log_fdw;
CREATE SERVER log_fdw_server FOREIGN DATA WRAPPER log_fdw;

List files available in the PostgreSQL log directory:

SELECT * FROM list_postgres_log_files() ORDER BY 1 DESC LIMIT 10;

Create foreign tables for CSV logs or plain .log files:

SELECT * FROM create_foreign_table_for_log_file(
  'postgresql_2022_11_28_csv',
  'log_fdw_server',
  'postgresql-2022-11-28.csv'
);

SELECT * FROM create_foreign_table_for_log_file(
  'postgresql_2022_11_28_log',
  'log_fdw_server',
  'postgresql-2022-11-28.log'
);

Querying

Foreign tables created from plain log files expose a single log-entry style column, while CSV log files expose structured columns such as log_time, error_severity, message, and session metadata.

Typical usage is straightforward:

SELECT * FROM postgresql_2022_11_28_log LIMIT 2;

SELECT log_time, error_severity, message
FROM postgresql_2022_11_28_csv
WHERE error_severity = 'ERROR'
ORDER BY log_time DESC
LIMIT 20;

Privileges

Only superusers can create the extension. The README also notes that superusers can delegate access to non-superusers with the minimum required grants, for example:

CREATE ROLE foo;
GRANT pg_monitor TO foo;
GRANT CREATE ON SCHEMA bar TO foo;
GRANT USAGE ON FOREIGN SERVER log_fdw_server TO foo;

pg_monitor is specifically needed when list_postgres_log_files() is used, because the underlying pg_ls_logdir() function requires it.

Build Notes

The project can be built standalone with PGXS:

export USE_PGXS=1
make
make install

The source can also be copied into PostgreSQL’s contrib tree and built there as part of a larger distribution.

Last updated on