在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),避免单个日志文件过大。