Skip to content

概述 ​

日志记录程序的运行状态、错误信息和性能数据。出了问题,日志往往是一线证据;没有日志,排查只能靠猜。

日志的用途 ​

  1. 调试与排错:记录运行时的详细过程,出错后按时间线回放。
  2. 性能监控:记录耗时等指标,从中找出慢在哪里。
  3. 安全审计:留下用户行为和系统事件的痕迹。
  4. 运维支持:生产环境里判断服务是否健康、故障从哪台机器开始。
  5. 业务分析:统计用户行为、业务流程的实际走向。

Go 语言中的日志解决方案概览 ​

Go 的日志方案分三层:标准库、第三方库、集中式工具。

  1. Go 标准库 log:

    • 提供基础的日志输出,支持日志前缀、标志和输出重定向。
    • 不支持日志级别和结构化日志,够用但仅限简单场景。
  2. 第三方日志库:

    • logrus:支持结构化日志、日志级别和钩子机制,适合日志格式复杂的场景。
    • zap:为性能优化,支持结构化日志和日志级别,适合高吞吐服务。
    • zerolog:以 JSON 格式记录,分配开销小,适合对延迟敏感的场景。
  3. 日志聚合与集中管理工具:

    • fluentd 和 logstash:把分散在各机器上的日志收集到一处统一检索。
    • 云日志服务:如 AWS CloudWatch 和 Google Stackdriver,负责收集、存储和分析,适合大规模分布式系统。

参考资料 ​

同层页面 ​

相关页面 ​

Hello Golang