CentOS上GitLab日志管理指南
gitlab-ctl命令(推荐)gitlab-ctl是GitLab提供的专门命令行工具,可便捷查看实时或指定日志:
sudo gitlab-ctl tail(实时输出所有服务的日志流)。sudo gitlab-ctl tail nginx/gitlab_access.log、Nginx错误日志sudo gitlab-ctl tail nginx/gitlab_error.log。sudo gitlab-ctl tail gitlab-rails/production.log。GitLab的日志默认存储在/var/log/gitlab目录下,可通过常规命令查看:
less /var/log/gitlab/gitlab-rails/production.log(支持上下翻页、搜索)。tail -f /var/log/gitlab/gitlab-rails/production.log(实时显示新增日志)。cat /var/log/gitlab/gitlab-rails/production_json.log(JSON格式的异常信息,便于快速定位问题)。journalctl命令(系统级日志)若GitLab以systemd服务管理,可通过journalctl查看系统级GitLab日志:
journalctl -u gitlab(整合了GitLab各组件的日志)。journalctl -u gitlab-rails。journalctl --since "2025-10-01" --until "2025-10-25"(查看指定时间段内的日志)。GitLab通过logrotate工具实现日志自动轮转,可通过修改/etc/gitlab/gitlab.rb自定义策略:
logging['svlogd_size'] = 200 * 1024 * 1024 # 单个日志文件超过200MB时切割
logging['svlogd_num'] = 30 # 保留最近30个切割后的日志文件
logging['svlogd_timeout'] = 24 * 60 * 60 # 每24小时生成新一天的日志(即使未达到大小)
logging['svlogd_filter'] = "gzip" # 切割后用gzip压缩旧日志(节省空间)
sudo gitlab-ctl reconfigure,GitLab会自动应用新配置。gitlab.conf文件,指定GitLab日志路径(如/var/log/gitlab/*.log)和解析规则。/etc/gitlab/gitlab.rb中配置日志输出到Graylog(通过GELF或Syslog协议)。通过/etc/gitlab/gitlab.rb中的logging['svlogd_num']参数控制日志保留天数(如上述配置保留30天),logrotate会自动删除过期日志。
GitLab的Git对象日志(如无用分支、标签)会占用大量磁盘空间,可通过以下命令清理:
git reflog expire --expire=30d --all(清理30天前的引用日志)。git gc --prune=30.days.ago(清理30天前的Git对象,压缩仓库)。