log_fdw

foreign-data wrapper for Postgres log file access

Overview

PackageVersionCategoryLicenseLanguage
log_fdw1.4FDWApache-2.0C
IDExtensionBinLibLoadCreateTrustRelocSchema
8810log_fdwNoYesNoYesNoNo-
Relatedpg_sqlog pgaudit file_fdw auto_explain pgauditlogtofile logerrors wrappers multicorn

PG18 fixed by vonng

Version

TypeRepoVersionPG VerPackageDeps
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

Build

You can build the DEB packages for log_fdw using pig build:

pig build pkg log_fdw         # build DEB packages

Install

You can install log_fdw directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

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

Install the extension using pig or apt/yum/dnf:

pig install log_fdw;          # Install for current active PG version
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:

CREATE EXTENSION log_fdw;

Usage

log_fdw: Foreign data wrapper for Postgres log file access

Create Server

CREATE EXTENSION log_fdw;

CREATE SERVER log_fdw_server FOREIGN DATA WRAPPER log_fdw;

List Available Log Files

SELECT * FROM list_postgres_log_files();

Returns the file name and size of each log file in the PostgreSQL log directory.

Create Foreign Table for CSV Logs

SELECT * FROM create_foreign_table_for_log_file(
  'postgresql_2024_01_15_csv',   -- foreign table name
  'log_fdw_server',               -- server name
  'postgresql-2024-01-15.csv'     -- log file name
);

Create Foreign Table for Plain Text Logs

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

Query Log Data

-- Query CSV-format logs (structured columns)
SELECT log_time, error_severity, message
FROM postgresql_2024_01_15_csv
WHERE error_severity = 'ERROR'
ORDER BY log_time DESC
LIMIT 20;

-- Query plain text logs
SELECT * FROM postgresql_2024_01_15_log LIMIT 10;

Granting Access to Non-Superusers

Only superusers can create the extension, but access can be granted:

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;

Functions Reference

FunctionDescription
list_postgres_log_files()List available log files and their sizes
create_foreign_table_for_log_file(table_name, server_name, file_name)Create a foreign table from a log file

Last Modified 2026-03-12: add pg extension catalog (95749bf)