定位日志文件
日志默认存放在/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
```。
参考来源: