You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 9.6中/pg_log/目录位置查询:慢查询追踪遇阻

解决PostgreSQL 9.6找不到pg_log目录的问题

嘿,作为经常帮PostgreSQL新手踩坑的老玩家,我来给你捋捋这个问题——毕竟从9.2升到9.6,确实有些默认配置的小变化容易让人懵。

第一步:先搞清楚日志目录的实际配置路径

PostgreSQL的日志目录是由log_directory参数控制的,9.6的默认值虽然还是pg_log,但如果是自定义安装或者配置被修改过,路径可能不一样。你可以通过psql执行命令直接查看:

SHOW log_directory;
  • 如果返回的是相对路径(比如pg_log),那这个目录是相对于PostgreSQL的数据目录的,你得先找到数据目录的位置:
    SHOW data_directory;
    
    把两个路径拼起来就是实际的日志目录路径(比如数据目录是/var/lib/postgresql/9.6/main,那日志目录就是/var/lib/postgresql/9.6/main/pg_log)。
  • 如果返回的是绝对路径,直接去对应的路径找就行。

第二步:检查日志收集功能是否开启

如果上面的路径确实不存在,很可能是因为日志收集器没打开,PostgreSQL不会自动创建pg_log目录。你可以检查这个参数:

SHOW logging_collector;

如果返回的是off,那你需要修改postgresql.conf配置文件:

  1. 找到logging_collector = off这一行,改成logging_collector = on
  2. 同时确保log_destination = 'csvlog'或者包含csvlog(这是生成文件日志的必要配置)
  3. 重启PostgreSQL服务,之后pg_log目录就会自动生成了。

第三步:排查权限问题(少见但值得注意)

如果上面两步都没问题还是找不到目录,可能是PostgreSQL运行用户(一般是postgres)没有权限在数据目录下创建子目录。你可以检查数据目录的权限:

ls -ld $(psql -t -c "SHOW data_directory;")

确保目录的所有者是postgres用户,且有读写权限。

最后提一句和9.2的区别

9.2默认的log_directory确实是data/pg_log,但9.6在默认配置上其实没改这个路径,大概率是你的9.6实例配置被调整过,或者日志收集器没开启导致目录没生成~

内容的提问来源于stack exchange,提问作者Sajeev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:05:49