商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > CentOS Golang日志如何查询

CentOS Golang日志如何查询

  发布于2026-07-28 阅读(0)

扫一扫,手机访问

在CentOS上排查Golang应用日志,说复杂也复杂,说简单也简单。关键在于你清楚自己的应用是怎么跑起来的——是直接写文件?还是通过systemd管理?或者干脆扔在Docker里?不同的部署方式,对应不同的日志查看姿势。下面把几种常见场景拆开说,基本覆盖了绝大多数情况。

1. 直接查看日志文件(适用于自定义路径的日志文件)

如果你的Golang应用把日志输出到了指定文件,比如/var/log/myapp.log,那最直接的办法就是上tailgrep。日常排查时,这两个命令组合几乎能解决80%的问题。

CentOS Golang日志如何查询

  • 实时查看新增日志:tail -f /path/to/your/app.log,按Ctrl+C退出;
  • 想查某个时间段的日志?用grep配合awk。比如只看2025-09-26这一天的:grep '2025-09-26' /path/to/your/app.log | awk '{print $1, $2, $3}'(具体字段数根据日志格式调整);
  • 只看最后N行,比如最后100行:tail -n 100 /path/to/your/app.log

2. 通过systemd服务查看日志(适用于以systemd管理的应用)

现在很多Go应用都通过systemd托管,比如my-golang-app.service。这种情况下,journalctl是你的好帮手,不用去翻文件路径。

  • 实时看服务日志:journalctl -u my-golang-app.service -f
  • 想看指定时间范围的日志,比如从2025-09-26到2025-09-27:journalctl -u my-golang-app.service --since "2025-09-26" --until "2025-09-27"
  • 过滤关键字,比如只显示包含“error”的行:journalctl -u my-golang-app.service | grep 'error'

3. 查看标准输出/错误(适用于直接运行的应用)

如果你的Go应用直接在终端里跑(没有重定向日志),那输出会直接打印在当前终端上。但问题是,历史输出怎么查?

  • 如果进程还在运行,先用ps aux | grep your_go_app找到进程ID(PID),然后通过journalctl -p -f查看(注意:这里-p参数可能需根据实际情况调整,更常见的是用journalctl _PID=);
  • 如果进程已经结束了,那标准输出/错误基本就丢了。所以建议从一开始就把日志重定向到文件:./your_app > app.log 2>&1,这样以后查起来方便得多。

4. 使用Docker容器查看日志(适用于容器化部署的应用)

容器化部署越来越普遍,这时候docker logs就是标配工具。

  • 实时查看容器日志:docker logs -f
  • 只看最后100行:docker logs --tail 100
  • 筛选关键字,比如找出所有“warning”:docker logs | grep 'warning'

注意事项

  • 权限问题:如果日志文件或systemd服务是root用户创建的,记得加sudo,比如sudo journalctl -u my-golang-app.service
  • 日志路径确认:万一不知道日志文件在哪,有两种办法:一是看代码中日志库的配置(比如logrusFilename),二是用lsof -p | grep log找到进程打开的文件句柄;
  • 日志轮转:长期运行的应用千万别忘了配置日志轮转。要么在代码里用lumberjack这类库,要么用系统自带的logrotate工具,否则日志文件越滚越大,迟早把磁盘撑爆。
本文转载于:https://www.yisu.com/ask/82678275.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注