pg_stat_log
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
pg_stat_log | 0.1 | STAT | PostgreSQL | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 6040 | pg_stat_log | No | Yes | Yes | Yes | No | Yes | - |
| Related | pg_stat_statements pg_stat_monitor pg_stat_plans |
|---|
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| 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 | - |
Install
You can install pg_stat_log directly. First, make sure the PGDG repository is added and enabled:
pig repo add pgdg -u # Add PGDG repo and update cache
Install the extension using pig or apt/yum/dnf:
pig install pg_stat_log; # Install for current active PG version
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
Preload:
shared_preload_libraries = '$libdir/pg_stat_log';
Create Extension:
CREATE EXTENSION pg_stat_log;
Usage
Sources: README, SQL objects, control file
pg_stat_log collects cumulative statistics about PostgreSQL log messages. It hooks into emit_log_hook and counts messages by backend type, database, user, severity, SQLSTATE, and SQLSTATE condition name.
Enable
pg_stat_log requires PostgreSQL 18 or newer and must be preloaded:
shared_preload_libraries = 'pg_stat_log'
Restart PostgreSQL, then create the extension:
CREATE EXTENSION pg_stat_log;
View Statistics
SELECT *
FROM pg_stat_log
ORDER BY count DESC;
The view exposes backend_type, database_oid, database_name, user_oid, user_name, elevel, sqlerrcode, sqlerrcode_name, and count.
Common Queries
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;
Reset And Capacity
SELECT pg_stat_log_reset();
SELECT * FROM pg_stat_log_info();
pg_stat_log_info() reports max_entries, num_entries, n_dropped, and stats_reset. Increase pg_stat_log.max_entries if n_dropped grows.
Configuration
Settings include pg_stat_log.enabled, pg_stat_log.min_error_level, and pg_stat_log.max_entries.
emit_log_hook only sees messages that reach the server log. log_min_messages therefore acts as a floor for what can be counted.
Feedback
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.