Log - 一个简洁且多彩的 Go 语言日志库

大家好,又见面了,我是 GitHub 精选君!

背景介绍

在日常的开发工作中,我们经常需要记录程序运行过程中的各种信息,以便于我们了解程序的运行状态,发现并解决问题。然而,标准的日志库通常功能单一,输出格式单调,缺乏人性化的设计,使得我们在查看日志时需要花费大量的时间和精力。因此,我们需要一个功能强大,易于使用,输出格式丰富多彩的日志库,来提高我们的开发效率。

今天要给大家推荐一个 GitHub 开源项目 charmbracelet/log,该项目在 GitHub 有超过 1.5k Star,用一句话介绍该项目就是:“A minimal, colorful Go logging library”。

项目介绍

Log 是一个简洁且多彩的 Go 语言日志库。它提供了一个具有多级别、结构化、人类可读的日志记录器,并且 API 使用简单。与标准日志库不同,Log 提供了可定制的多彩人类可读日志记录,包括以下特点:

  • 使用 Lip Gloss 来样式化和色彩化输出。
  • 多彩的、人类可读的格式。
  • 能够定制时间戳格式。
  • 跳过调用者框架并将函数标记为助手。
  • 多级别日志记录。
  • 文本、JSON 和 Logfmt 格式化器。
  • 在上下文中存储和检索日志记录器。
  • 标准日志适配器。

以下是一些具体的使用示例:

1、基本使用

log.Debug("Cookie 🍪") // won't print anything
log.Info("Hello World!")

2、增加额外的 Option

logger := log.NewWithOptions(os.Stderr, log.Options{
    ReportCaller: true,
    ReportTimestamp: true,
    TimeFormat: time.Kitchen,
    Prefix: "Baking 🍪 "
})
logger.Info("Starting oven!", "degree", 375)
time.Sleep(10 * time.Minute)
logger.Info("Finished baking")

更多使用示例请查看 GitHub。

如何使用

首先,使用 go get 命令下载依赖:

go get github.com/charmbracelet/log@latest

然后,在你的 Go 文件中导入它:

import "github.com/charmbracelet/log"

你可以使用 log.Print() 来打印没有级别前缀的消息,或者使用 New() 来创建新的日志记录器。此外,Log 提供了多个级别来过滤你的日志,你可以使用 log.SetLevel() 来设置日志级别,或者使用 log.Options{Level: } 来创建具有特定日志级别的新日志记录器。

项目推介

Log 由 Charmbracelet 团队开发和维护。Charmbracelet 是一个知名的开源团队,他们开发的项目广受开发者喜爱。Log 项目的设计理念和实现方式都非常出色,无论是对于日志记录的需求,还是对于学习 Go 语言的开发者来说,都是一个非常好的选择。

以下是该项目 Star 趋势图(代表项目的活跃程度):

更多项目详情请查看如下链接。

开源项目地址:https://github.com/charmbracelet/log

开源项目作者:charmbracelet

以下是参与项目建设的所有成员:

关注我们,一起探索有意思的开源项目。


更多精彩请扫码关注如下公众号。

Written on October 7, 2023