温馨提示×

CentOS PostgreSQL怎么开启日志

小樊
46
2026-07-09 17:39:43
栏目: 云计算

CentOS 上开启 PostgreSQL 日志,主要通过修改 postgresql.conf 配置文件来实现。下面以 CentOS 7/8 + PostgreSQL 12/13/14/15 为例,步骤通用。


一、确认 PostgreSQL 配置文件位置

sudo -u postgres psql -c "SHOW config_file;"

一般路径类似:

/var/lib/pgsql/14/data/postgresql.conf

二、编辑 postgresql.conf 开启日志

sudo vi /var/lib/pgsql/14/data/postgresql.conf

1️⃣ 开启日志收集(必须)

logging_collector = on

2️⃣ 设置日志目录(可选,默认在 data 目录)

log_directory = 'log'

默认路径:$PGDATA/log


3️⃣ 设置日志文件名格式

log_filename = 'postgresql-%Y-%m-%d.log'

或按时间滚动:

log_filename = 'postgresql-%a.log'

4️⃣ 设置日志内容(常用)

✅ 记录所有 SQL(开发/排查用)

log_statement = 'all'

可选值:

  • none(默认)
  • ddl
  • mod
  • all

✅ 记录慢查询(推荐)

log_min_duration_statement = 1000   # 毫秒(1秒)

5️⃣ 其他常用日志参数(可选)

log_connections = on
log_disconnections = on
log_duration = off
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

三、重启 PostgreSQL 使配置生效

CentOS 7

sudo systemctl restart postgresql-14

CentOS 8

sudo systemctl restart postgresql

四、查看日志

cd /var/lib/pgsql/14/data/log
ls
tail -f postgresql-2026-01-21.log

五、只临时开启日志(不推荐生产)

SET log_statement = 'all';

⚠️ 只对当前会话有效,重启失效。


六、生产环境建议配置 ✅

logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d.log'
log_min_duration_statement = 500
log_connections = on
log_disconnections = on
log_line_prefix = '%t [%p]: user=%u,db=%d,client=%h '

七、常见问题

❓ 日志没生成?

  • 是否 logging_collector = on
  • 是否重启 PostgreSQL
  • 目录权限是否正确

❓ SELinux 拦截?

getenforce

临时关闭测试:

sudo setenforce 0

如果你愿意,可以告诉我:

  • PostgreSQL 版本
  • CentOS 版本
  • 开发环境还是生产环境

我可以帮你给出最优日志配置方案

0