温馨提示×

怎样抓取centos golang日志

小樊
45
2026-10-26 15:46:03
栏目: 编程语言

在 CentOS 上抓取(收集 / 查看 / 导出)Golang 程序日志,通常有几种常见场景。下面按使用方式从简单到规范逐一说明,你可以按需选择。


一、直接查看 Golang 程序日志(最基础)

1️⃣ 前台运行程序

如果 Golang 程序是直接在前台运行:

./your_app

日志会直接输出到终端。

2️⃣ 后台运行(nohup / &)

nohup ./your_app > app.log 2>&1 &

查看日志:

tail -f app.log

二、使用 systemd 管理 Golang 服务(推荐)

1️⃣ 创建 systemd 服务

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

2️⃣ 启动服务

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

3️⃣ 抓取日志(核心)

# 实时查看
journalctl -u myapp -f

# 查看最近 100 行
journalctl -u myapp -n 100

# 按时间查看
journalctl -u myapp --since "2026-01-20 10:00"

✅ 这是 CentOS 7/8 最标准的方式


三、Golang 自身写日志文件

示例(log 包)

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/

四、集中抓取 & 分析日志

1️⃣ grep 过滤

journalctl -u myapp | grep ERROR

2️⃣ 日志切割(防止爆炸)

sudo yum install logrotate

示例 /etc/logrotate.d/myapp:

/var/log/myapp.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

五、进阶:日志采集系统(生产环境)

如果你是多台 CentOS 服务器:

  • Filebeat + ELK
  • Fluent Bit + Loki
  • rsyslog → 远程日志服务器

六、快速总结

场景 方法
临时调试 tail -f app.log
正式服务 systemd + journalctl
日志文件 Golang 写文件
生产环境 日志采集系统

如果你愿意,可以告诉我:

  • ✅ Golang 是怎么运行的(systemd / docker / 直接跑)
  • ✅ 日志是 stdout 还是写文件
  • ✅ CentOS 版本(7 / 8 / Stream)

我可以直接给你一套可复制的配置。

0 踩