定位日志文件
日志默认存放在/var/log/postgresql/
目录,文件名格式为postgresql-{版本号}-{实例名}.log
。
基础查看命令
sudo tail -f /var/log/postgresql/postgresql-*.log
。less /var/log/postgresql/postgresql-*.log
,支持搜索关键词(如/ERROR
)。日志配置优化
postgresql.conf
,设置log_min_messages=DEBUG5
(记录所有信息)或log_statement=all
(记录所有SQL语句)。log_rotation_age=1d
(每天轮转)和log_filename='postgresql-%Y-%m-%d.log'
。使用专业工具分析
sudo apt-get install pgbadger pgbadger /var/log/postgresql/ -o report.html # 生成HTML报告 ```。
关键分析场景
ERROR
、FATAL
等关键词定位异常。log_duration
和log_min_duration_statement
,结合EXPLAIN ANALYZE
分析执行计划。log_connections
和log_disconnections
记录连接状态。日志轮转与归档
logrotate
自动压缩旧日志,避免磁盘占满:sudo nano /etc/logrotate.d/postgresql # 示例配置:每天轮转,保留7天 /var/log/postgresql/*.log { daily rotate 7 compress missingok } ```。
权限与安全
限制日志文件访问权限,仅授权用户可查看:
sudo chown postgres:postgres /var/log/postgresql/*.log sudo chmod 600 /var/log/postgresql/*.log ```。
参考来源: