专业的编程技术博客社区

网站首页 > 博客文章 正文

Golang的日志库(go日志框架)

baijin 2025-03-17 15:52:45 博客文章 13 ℃ 0 评论

k8s的日志库

在Kubernetes (K8s) 中,默认使用的是 kubelet 和 kubectl 客户端日志库。这些组件使用了 glog 日志库,它是Golang的一个轻量级日志库。

glog 是一个Google开源的日志库,它提供了类似于标准库的 log 包的接口,但具有更高级的特性和配置选项。它支持日志级别、格式化输出、日志文件的轮转和分割等功能。glog 还提供了命令行标志,可以动态地配置日志级别和输出路径等参数。

在Kubernetes的源代码中,你会看到很多地方使用了 glog 日志库进行日志记录,例如kubelet组件、kube-proxy组件、kubectl命令行工具等。

etcd的日志库

etcd 是一个分布式键值存储系统,用于可靠存储和检索数据。Etcd 使用的是 zap 日志库进行日志记录。

zap(go.uber.org/zap) 是 Uber 开源的一个快速、结构化、类型安全的日志库,被广泛用于许多大规模分布式系统中。它提供了高性能和低内存占用的特性,并具有丰富的配置选项和灵活的 API。zap 的特点包括高度可定制的日志级别、字段注入、异步和同步记录模式、结构化日志记录等。

Etcd 使用 zap 日志库来记录主进程的运行日志,包括关键操作、错误日志、调试信息等。它可以帮助开发人员和运维人员了解 Etcd 的运行状态、故障排查和性能调优。

istio的日志库

仍然使用的是Uber的zap(go.uber.org/zap)日志库

InfluxDB的日志库

仍然使用的是Uber的zap(go.uber.org/zap)日志库

Prometheus的日志库

主要使用的是github.com/go-kit/log这个日志库,它的结构化日志记录提供了一个最小的接口。它可以被封装以编码规范、强制类型安全性、提供分级日志记录等功能。它可用于典型的应用程序日志事件和日志结构化数据流。

// 未结构化
log.Printf("HTTP server listening on %s", addr)

// 结构化
logger.Log("transport", "HTTP", "addr", addr, "msg", "listening")

Traefik的日志库

主要是用logrus(
github.com/sirupsen/logrus),以及zerolog(
https://github.com/rs/zerolog)来记录日志。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表