/etc/postgresql/{版本}/main/postgresql.conf
:logging_collector = on # 启用日志收集器
log_directory = 'pg_log' # 日志存储目录(可自定义)
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # 日志命名格式
log_min_messages
:控制记录的日志级别(如 debug5
、info
、error
)。log_min_duration_statement
:记录执行时间超过指定值(如 2s
)的SQL语句,用于慢查询分析。tail -f /var/log/postgresql/postgresql-{版本}-main.log # 替换为实际版本号
grep "ERROR" /var/log/postgresql/postgresql-*.log # 筛选错误日志
/etc/logrotate.d/postgresql
,示例配置(每天轮转,保留7天,压缩旧日志):/var/log/postgresql/postgresql-*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 postgres adm
}
执行 logrotate -vf /etc/logrotate.d/postgresql
手动测试。rsync
、Logstash
)将日志定期备份到远程服务器或云存储。grep -c "ERROR" /var/log/postgresql/*.log
。pgBadger
生成可视化报告:pgbadger /var/log/postgresql/postgresql-*.log -o /path/to/report
ELK Stack
(Elasticsearch+Logstash+Kibana)构建日志监控系统,支持实时搜索和趋势分析。chown postgres:adm /var/log/postgresql/*.log # 仅允许PostgreSQL用户和管理员访问
chmod 640 /var/log/postgresql/*.log
参考来源: