debian

如何利用Golang日志进行Debian故障排查

小樊
41
2025-09-06 15:09:22
栏目: 编程语言

  1. 选择日志库:使用标准库log或第三方库(如logruszap),支持结构化日志、日志级别配置及输出到文件等功能。

    • 示例(logrus):
      import "github.com/sirupsen/logrus"
      log := logrus.New()
      log.SetLevel(logrus.DebugLevel)
      log.SetFormatter(&logrus.JSONFormatter{})
      log.WithFields(logrus.Fields{"key": "value"}).Info("日志信息")
      
  2. 配置日志输出:将日志输出到文件并设置轮转(如使用lumberjack库),避免日志文件过大。

    • 示例:
      import "gopkg.in/natefinch/lumberjack.v2"
      log.SetOutput(&lumberjack.Logger{
          Filename:   "/var/log/app.log",
          MaxSize:    10, // MB
          MaxBackups: 3,
          Compress:   true,
      })
      
  3. 查看系统日志

    • 使用journalctl查看systemd服务日志(支持按服务、时间段过滤):
      sudo journalctl -u <服务名> --since "2025-01-01"  # 查看特定服务日志
      sudo journalctl -f  # 实时查看日志
      
    • 查看系统日志文件(/var/log目录):
      cat /var/log/syslog  # 系统通用日志
      grep "error" /var/log/auth.log  # 搜索认证错误
      
  4. 分析日志

    • 命令行工具:用grep搜索关键字、awk提取字段、sed替换文本。
    • 工具分析:使用ELK Stack(日志收集+分析+可视化)、Logwatch生成报告。
  5. 关联应用与系统日志

    • 在Golang代码中记录关键操作(如请求参数、错误堆栈),结合系统日志定位问题。
    • 通过日志时间戳对齐应用与系统事件,排查依赖服务异常。
  6. 调试工具辅助

    • 使用Delve调试器实时查看变量和调用栈。
    • 通过pprof分析性能瓶颈,辅助定位慢请求等问题。

关键日志路径

0
看了该问题的人还看了