在CentOS系統中,查看Golang應用程序的日志需根據其日志輸出方式(文件、標準輸出/錯誤、系統服務、容器等)選擇對應方法,以下是具體場景及操作步驟:
若Golang應用通過log.SetOutput()
將日志寫入文件(如app.log
),可使用以下命令查看:
cat /path/to/app.log
(替換為實際日志路徑);tail -f /path/to/app.log
(按Ctrl+C
停止);less /path/to/app.log
(按q
退出);grep "ERROR" /path/to/app.log
(僅顯示包含“ERROR”的行)。提示:若未指定路徑,日志可能默認輸出到應用工作目錄(可通過os.Getwd()
獲?。?,可使用find / -name "*.log" 2>/dev/null
全局搜索。
若應用以systemd服務運行(如服務文件位于/etc/systemd/system/yourapp.service
),需配置日志重定向至systemd日志:
[Service]
段添加以下配置,將標準輸出/錯誤追加到指定文件:StandardOutput=append:/var/log/yourapp.log
StandardError=append:/var/log/yourapp.log
或直接輸出到systemd日志(無需手動指定文件):StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=my-golang-app
sudo systemctl daemon-reload
sudo systemctl restart yourapp
journalctl
命令實時跟蹤:sudo journalctl -u yourapp -f # -u指定服務名,-f實時刷新
可添加時間過濾(如--since "2025-10-01"
)或關鍵字過濾(如-g "panic"
)。若應用部署在Docker容器中,需通過容器ID或名稱查看日志:
docker ps
;docker logs -f <容器ID或名稱>
(按Ctrl+C
停止);docker logs --tail 100 <容器ID或名稱>
。對于分布式系統或海量日志,建議使用ELK Stack(Elasticsearch+Logstash+Kibana)或Fluentd等工具,實現日志的集中收集、搜索、分析與可視化。需在應用中配置日志輸出到工具采集的端點(如Logstash的TCP/UDP端口)。
os.OpenFile
是否成功);logrotate
或第三方庫lumberjack
),避免單個日志文件過大。