温馨提示×

如何查看CentOS Golang日志

小樊
32
2025-12-25 11:31:24
栏目: 编程语言

查看 CentOS 上 Golang 应用日志的实用方法

一 确认日志输出位置

  • 常见位置包括:应用工作目录(如当前目录或项目目录)、自定义目录(如 /var/log/your_app/)、用户家目录(如 /home/username/logs/),以及通过 syslog/journald 写入系统日志的情况。若使用 systemd 托管服务,日志通常由 journald 管理。定位路径最直接的方式是查看应用的配置文件、启动脚本或源码中的日志初始化逻辑(例如 log.SetOutputlogruszap 的输出设置)。

二 常用查看命令

  • 实时查看文件日志:使用 tail -f /path/to/app.log 跟踪最新输出;结合 grep 过滤关键字,如 grep ‘error’ /path/to/app.log 或反向过滤 grep -v ‘debug’
  • 查看 systemd 服务日志:若服务名为 my-golang-app.service,使用 journalctl -u my-golang-app.service 查看全部日志,或 journalctl -u my-golang-app.service -f 实时跟踪;可按时间范围检索,如 journalctl --since “2024-04-01” --until “2024-04-30”,也可配合 grep 搜索关键字。
  • 直接查看控制台输出:应用在前台运行时,日志会打印到终端;若通过 nohup 启动,可在 nohup.out 中查看。
    以上命令覆盖了文件日志与 systemd 日志两大常见场景。

三 按场景给出的命令示例

  • 文件日志:实时查看并高亮错误
    • 命令:tail -f /var/log/myapp/app.log | grep --color=auto -i error
  • systemd 服务日志:查看最近 100 行并持续跟踪
    • 命令:journalctl -u my-golang-app.service -n 100 -f
  • 时间范围检索:查看昨天的日志
    • 命令:journalctl -u my-golang-app.service --since “2025-12-24 00:00:00” --until “2025-12-24 23:59:59”
  • 关键字统计与排查:统计错误出现次数
    • 命令:grep -c ‘error’ /var/log/myapp/app.log
      这些示例可快速定位启动失败、运行异常与错误频发的时间段与上下文。

四 日志轮转与长期管理

  • 应用内轮转:使用 lumberjack 实现按大小与保留天数切割。示例:
    • 配置:MaxSize=10(MB)、MaxBackups=3MaxAge=28(天)、Compress=true;写入路径如 /var/log/myapp.log
  • 系统级轮转:交由 logrotate 管理。做法:在 /etc/logrotate.d/ 下新增配置(如 /etc/logrotate.d/myapp),设置 daily/weeklyrotate 7compressmissingok、以及 postrotate 触发服务重新打开日志文件(如 systemctl reload my-golang-app)。
    合理的轮转策略可避免单文件过大、便于归档与追溯。

五 让日志更易查的编码建议

  • 使用成熟日志库(如 logruszap)并统一日志格式(包含 时间级别调用者 等);为便于检索,建议在日志中输出 request_id/ trace_id
  • systemd 服务单元中设置 StandardOutput=journalStandardError=journal,必要时配合 SyslogIdentifier=my-golang-app;为服务配置合适的 User/GroupWorkingDirectory,并确保日志目录存在且可写(如 /var/log/myapp/,权限 0755,日志文件 0644)。
  • 为关键错误增加 主动告警(如对接企业微信/钉钉/邮件),并建立按天/按模块的日志目录结构。
    这些实践能显著提升定位效率与可运维性。

0