温馨提示×

如何查看CentOS上Golang的日志

小樊
48
2025-10-05 02:52:32
栏目: 编程语言

如何在CentOS上查看Golang日志

在CentOS系统中,查看Golang应用程序的日志需根据其日志输出方式(文件、标准输出/错误、系统服务、容器等)选择对应方法,以下是具体场景及操作步骤:

1. 直接查看日志文件(最常见场景)

若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全局搜索。

2. 通过systemd服务查看(推荐生产环境使用)

若应用以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")。

3. 查看Docker容器中的日志(若应用运行在容器内)

若应用部署在Docker容器中,需通过容器ID或名称查看日志:

  • 获取容器ID/名称docker ps
  • 实时查看日志docker logs -f <容器ID或名称>(按Ctrl+C停止);
  • 查看最近100行日志docker logs --tail 100 <容器ID或名称>

4. 使用日志收集工具(大规模生产环境)

对于分布式系统或海量日志,建议使用ELK Stack(Elasticsearch+Logstash+Kibana)或Fluentd等工具,实现日志的集中收集、搜索、分析与可视化。需在应用中配置日志输出到工具采集的端点(如Logstash的TCP/UDP端口)。

注意事项

  • 若日志未生成,需检查应用代码是否正确配置了日志输出路径(如os.OpenFile是否成功);
  • 生产环境中建议使用日志轮转(如logrotate或第三方库lumberjack),避免单个日志文件过大。

0