gitlab-ctl
命令(推薦):GitLab自帶的命令行工具,可高效查看和管理日志。
sudo gitlab-ctl tail
(按Ctrl+C
退出);sudo gitlab-ctl tail gitlab-rails
、sudo gitlab-ctl tail sidekiq
;sudo gitlab-ctl tail nginx/gitlab_error.log
。journalctl
命令(Systemd系統):適用于查看系統級GitLab服務日志。
sudo journalctl -u gitlab
;sudo journalctl -u gitlab-rails
;sudo journalctl --since "2025-10-01"
;sudo journalctl -u gitlab -f
。/var/log/gitlab
目錄下,可使用cat
、less
、tail
等命令查看。
sudo cat /var/log/gitlab/gitlab-rails/production.log
;sudo tail -f /var/log/gitlab/gitlab-rails/production.log
;sudo cat /var/log/gitlab/gitlab-rails/sidekiq.log
。GitLab的日志按組件分類,重點關注以下文件:
production.log
:記錄HTTP請求詳情(URL、IP、請求類型、SQL執行時間及結果),是排查Web請求問題的核心日志;application.log
:記錄用戶/項目管理操作(創建、移動項目、修改權限);githost.log
:記錄對GitLab服務器的錯誤請求(如無效Git操作、非法訪問);sidekiq.log
:記錄后臺任務(如CI/CD流水線、郵件發送)的執行狀態,用于排查異步任務失敗問題;gitlab-shell.log
:記錄Git命令執行(push/pull)及SSH權限變更日志;unicorn_stderr.log
:記錄Web服務器(Unicorn)的錯誤信息(如端口沖突、請求超時)。grep
命令快速定位特定事件。例如:
sudo grep ' 404 ' /var/log/gitlab/nginx/access.log
;sudo grep -A 10 -B 5 'ERROR' /var/log/gitlab/gitlab-rails/production.log
;sudo grep 'failed' /var/log/gitlab/gitlab-rails/sidekiq.log
。tail -f
與grep
實時追蹤錯誤。例如:sudo tail -f /var/log/gitlab/gitlab-rails/production.log | grep -i 'error\|exception'
,可實時顯示生產環境中的錯誤信息。journalctl
的時間過濾功能查看特定時間段日志。例如:sudo journalctl -u gitlab-rails --since "2025-10-01 00:00:00" --until "2025-10-01 23:59:59"
,可分析當天GitLab Rails服務的運行情況。logrotate
工具自動切割、壓縮舊日志,避免日志文件過大占用磁盤空間。
/etc/gitlab/gitlab.rb
,調整輪轉參數(默認每天切割,保留30天):logging['logrotate_frequency'] = "daily" # 切割頻率(daily/weekly/monthly)
logging['logrotate_rotate'] = 30 # 保留日志天數
logging['logrotate_compress'] = "compress" # 壓縮方式(gzip/bzip2等)
sudo gitlab-ctl reconfigure
,重啟GitLab使更改生效。/etc/gitlab/gitlab.rb
中的日志級別(可選debug
、info
、warn
、error
、fatal
):gitlab_rails['log_level'] = :debug # 開發調試建議用debug,生產環境建議用info或warn
sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart
。對于生產環境,建議使用專業日志分析工具提升效率: