如何在CentOS上查看Golang日志

在CentOS上排查Golang应用的日志,其实没有固定的“万能钥匙”——关键要看应用是怎么输出日志的。是写到了文件里,还是直接扔给了标准输出/错误?是通过systemd跑的,还是装在Docker容器里?下面针对几种常见场景,把对应的查看方法拆开来说。

如何查看CentOS上Golang的日志

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

如果Golang应用通过log.SetOutput()把日志写到了文件里(比如app.log),那操作就非常直接了:

这里有个小坑——如果应用代码里没有显式指定日志路径,日志可能会默认输出到应用的工作目录。可以用os.Getwd()在代码里获取当前目录,或者干脆全局搜一把:find / -name "*.log" 2>/dev/null

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

生产环境下很多应用都是当作systemd服务来管理的(服务文件在/etc/systemd/system/yourapp.service)。这种情况下,需要先在服务文件里配置日志重定向:

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

如果应用是跑在Docker容器里的,那就不能直接在宿主机上找文件了,得通过容器来查:

这个命令会把容器内标准输出/错误的内容拉出来,前提是应用把日志写到了stdout/stderr(Golang推荐的做法之一)。

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

一旦你的服务上了规模,或者系统是分布式的,单机用tailgrep就有点力不从心了。这个时候,ELK Stack(Elasticsearch+Logstash+Kibana)或者Fluentd这类工具就是标配。思路很简单:在应用中把日志输出到工具采集的端点(比如Logstash的TCP/UDP端口),然后由工具统一收集、索引、搜索和可视化。一台机器上查日志的时代就过去了,你会爱上Kibana的搜索栏的。

注意事项

本文转载于:https://www.yisu.com/ask/71873521.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。