GitLab在CentOS下的日志集中存储于/var/log/gitlab目录,按服务类型分类(如gitlab-rails、nginx、gitlab-shell等)。核心日志文件包括:
gitlab-rails/production.log:记录GitLab Rails应用的请求详情(URL、IP、请求类型、SQL执行时间及代码片段);gitlab-rails/production_json.log:以JSON格式记录异常信息(便于程序化分析);nginx/gitlab_access.log:记录HTTP访问日志(请求时间、客户端IP、响应状态码、请求路径);nginx/gitlab_error.log:记录Nginx层的错误(如404、500、连接超时);gitlab-shell/gitlab-shell.log:记录Git命令执行日志(如git push、git pull);unicorn/unicorn_stdout.log:记录Unicorn应用服务器的日志(Web层请求处理情况)。tail -f动态追踪日志新增内容(如tail -f /var/log/gitlab/gitlab-rails/production.log);cat或less输出日志全部内容(如sudo cat /var/log/gitlab/gitlab-rails/production.log);grep筛选特定信息(如错误信息grep "ERROR" /var/log/gitlab/gitlab-rails/production.log、用户操作grep "username" /var/log/gitlab/gitlab-rails/production.log)。gitlab-ctl是GitLab提供的命令行工具,可便捷管理日志:
sudo gitlab-ctl tail(按Ctrl+C退出);sudo gitlab-ctl tail gitlab-rails(Rails应用日志)、sudo gitlab-ctl tail nginx/gitlab_error.log(Nginx错误日志);sudo gitlab-ctl tail /var/log/gitlab/gitlab-rails/production.log(直接指定日志路径)。若CentOS使用systemd管理服务,可通过journalctl查看GitLab服务日志:
sudo journalctl -u gitlab;sudo journalctl -u gitlab-rails(Rails服务日志);sudo journalctl --since "2025-10-01" --until "2025-10-21"(查看10月1日至21日的日志)。grep -c "ERROR" /var/log/gitlab/gitlab-rails/production.log(统计生产日志中的错误条目数);awk '{print $4}' /var/log/gitlab/nginx/gitlab_access.log | grep -E '2025-10-01|2025-10-21' | cut -d: -f1 | sort | uniq -c | sort -rn(统计10月1日至21日每天的请求数,按降序排列);grep '192.168.1.100' /var/log/gitlab/nginx/gitlab_access.log | wc -l(统计IP为192.168.1.100的访问次数);grep -A 5 -B 5 "ERROR" /var/log/gitlab/gitlab-rails/production.log(显示错误信息及前后5行上下文,便于定位问题原因)。GitLab内置logrotate工具,可自动切割、压缩旧日志,避免日志文件过大:
/etc/gitlab/gitlab.rb(自定义日志轮转参数,如切割大小、保留天数);logging['logrotate_frequency'] = "daily"(每天切割一次);logging['logrotate_rotate'] = 30(保留30个备份);logging['logrotate_compress'] = "compress"(使用gzip压缩旧日志);logging['logrotate_dateformat'] = "-%Y-%m-%d"(日志文件名添加日期后缀,如production-2025-10-21.log)。production.log中的错误堆栈(如数据库连接失败、代码异常),结合production_json.log中的JSON异常信息定位具体原因;nginx_error.log(如Nginx与GitLab服务通信失败)、unicorn.log(如Unicorn进程崩溃),确认服务是否正常运行;production.log中的访问记录(如access denied for user xxx),检查用户角色及项目权限设置;gitlab-rails/production.log中的流水线日志(如依赖安装失败、脚本执行错误),结合Runner日志(/var/log/gitlab-runner/)定位问题。