在 CentOS 上抓取(收集 / 查看 / 导出)Golang 程序日志,通常有几种常见场景。下面按使用方式从简单到规范逐一说明,你可以按需选择。
如果 Golang 程序是直接在前台运行:
./your_app
日志会直接输出到终端。
nohup ./your_app > app.log 2>&1 &
查看日志:
tail -f app.log
sudo vi /etc/systemd/system/myapp.service
示例:
[Unit]
Description=Golang App
After=network.target
[Service]
ExecStart=/opt/myapp/myapp
WorkingDirectory=/opt/myapp
User=appuser
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
# 实时查看
journalctl -u myapp -f
# 查看最近 100 行
journalctl -u myapp -n 100
# 按时间查看
journalctl -u myapp --since "2026-01-20 10:00"
✅ 这是 CentOS 7/8 最标准的方式
logFile, _ := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
log.SetOutput(logFile)
log.Println("server started")
查看:
tail -f /var/log/myapp.log
常见路径:
/var/log//opt/app/logs/journalctl -u myapp | grep ERROR
sudo yum install logrotate
示例 /etc/logrotate.d/myapp:
/var/log/myapp.log {
daily
rotate 7
compress
missingok
notifempty
}
如果你是多台 CentOS 服务器:
| 场景 | 方法 |
|---|---|
| 临时调试 | tail -f app.log |
| 正式服务 | systemd + journalctl |
| 日志文件 | Golang 写文件 |
| 生产环境 | 日志采集系统 |
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置。