golang轻量级CLI调试日志记录工具插件kembadebug的使用

golang轻量级CLI调试日志记录工具插件kembadebug的使用

简介

kemba是一个轻量级的Go语言调试日志记录工具,灵感来源于visionmedia/debug模块。它是一个CLI工具,主要用于开发调试时的日志记录。

为什么叫kemba?

在Go语言中,"debug"通常指的是runtime/debug包。由于这个工具受到了npm模块debug的启发,作者想找一个与灵感来源相关的词。根据Google翻译,“debug"在冰岛语中被翻译为"kemba”。

使用说明

kemba日志工具通过读取DEBUGKEMBA环境变量来决定是否输出日志行。日志输出到STDERR

当环境变量未设置时,日志工具会立即返回,不执行任何操作。

当设置环境变量值(例如DEBUG=example:*,tool:details和/或KEMBA=plugin:fxn:start)时,日志工具会在实例化时确定是否应启用。

完整示例

package main

import (
    "time"
    "github.com/clok/kemba"
)

type myType struct {
    a, b int
}

// 当DEBUG或KEMBA环境变量设置为DEBUG=example:*时,kemba日志将输出到STDERR
func main() {
    k := kemba.New("example:tag")
    
    var x = []myType{
        {1, 2},
        {3, 4},
    }
    k.Printf("%#v", x)
    // 输出到os.Stderr
    // example:tag []main.myType{main.myType{a:1, b:2}, main.myType{a:3, b:4}} +0s

    // 人为延迟以演示时间标记
    time.Sleep(250 * time.Millisecond)
    k.Printf("%# v", x)
    k.Println(x)

    // 人为延迟以演示时间标记
    time.Sleep(100 * time.Millisecond)
    k.Log(x)
    // 所有结果都输出到os.Stderr
    // example:tag []main.myType{ +XXms
    // example:tag     {a:1, b:2},
    // example:tag     {a:3, b:4},
    // example:tag }

    // 创建一个带有扩展标签的新日志记录器
    k1 := k.Extend("1")
    k1.Println("a string", 12, true)
    // 输出到os.Stderr
    // example:tag:1 a string +0s
    // example:tag:1 int(12)
    // example:tag:1 bool(true)
}

环境变量说明

  • DEBUGKEMBA:用于控制日志输出的环境变量
  • 值可以是简单的正则表达式替代,其中通配符(*)被替换为.*,所有项都带有^前缀和$后缀
  • 如果项不包含通配符,则需要完全匹配
  • 示例:DEBUG=example:*:fxn将匹配类似[example:tag1:fxn, example:tag2:fxn, example:anything:fxn, ...]的标签

要禁用颜色,请将NOCOLOR环境变量设置为任何值。

开发说明

  1. Fork clok/kemba仓库
  2. 使用go >= 1.16
  3. 创建分支并编码
  4. 运行linters:golangci-lint run
  5. 使用Conventional Commit提交
  6. 发起PR

更多关于golang轻量级CLI调试日志记录工具插件kembadebug的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang轻量级CLI调试日志记录工具插件kembadebug的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang轻量级CLI调试日志记录工具kembadebug使用指南

kembadebug是一个轻量级的Golang CLI调试日志记录工具,特别适合命令行应用程序的开发和调试。下面我将详细介绍它的使用方法和示例代码。

安装

go get github.com/keminar/anyproxy/utils/kembadebug

基本使用

初始化

package main

import (
	"github.com/keminar/anyproxy/utils/kembadebug"
)

func main() {
	// 初始化调试日志,设置日志级别为Debug
	kembadebug.Init(true, false)
	
	// 你的应用代码...
}

日志级别

kembadebug支持多种日志级别:

func main() {
	kembadebug.Init(true, false) // 第一个参数控制Debug级别,第二个控制Trace级别
	
	// Debug级别日志
	kembadebug.Debug("这是一条Debug日志")
	
	// Info级别日志
	kembadebug.Info("这是一条Info日志")
	
	// Warning级别日志
	kembadebug.Warning("这是一条Warning日志")
	
	// Error级别日志
	kembadebug.Error("这是一条Error日志")
	
	// Trace级别日志(更详细的调试信息)
	kembadebug.Trace("这是一条Trace日志")
}

高级功能

条件日志记录

func processData(data string) {
	// 只有在Debug模式启用时才会记录
	kembadebug.Debug("处理数据: %s", data)
	
	if len(data) > 100 {
		kembadebug.Warning("数据长度超过100字符")
	}
}

性能追踪

func expensiveOperation() {
	defer kembadebug.TraceTime("expensiveOperation")()
	
	// 耗时操作...
	time.Sleep(2 * time.Second)
}

自定义输出

func main() {
	// 自定义输出到文件
	file, err := os.Create("debug.log")
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()
	
	// 设置自定义输出
	kembadebug.SetOutput(file)
	
	// 现在所有日志将写入文件
	kembadebug.Info("这条日志会写入文件")
}

完整示例

下面是一个完整的CLI应用示例,展示如何在真实项目中使用kembadebug:

package main

import (
	"flag"
	"os"
	"time"

	"github.com/keminar/anyproxy/utils/kembadebug"
)

func main() {
	// 解析命令行参数
	debug := flag.Bool("debug", false, "启用调试模式")
	trace := flag.Bool("trace", false, "启用跟踪模式")
	flag.Parse()

	// 初始化调试日志
	kembadebug.Init(*debug, *trace)

	// 示例操作
	kembadebug.Info("应用程序启动")
	
	processUserInput(flag.Args())
	
	kembadebug.Info("应用程序结束")
}

func processUserInput(args []string) {
	defer kembadebug.TraceTime("processUserInput")()
	
	if len(args) == 0 {
		kembadebug.Warning("没有提供输入参数")
		return
	}
	
	kembadebug.Debug("处理输入参数: %v", args)
	
	// 模拟处理
	for i, arg := range args {
		kembadebug.Trace("处理参数 %d: %s", i, arg)
		time.Sleep(100 * time.Millisecond)
	}
	
	kembadebug.Info("成功处理了 %d 个参数", len(args))
}

最佳实践

  1. 生产环境:在生产环境中,通常只启用Error和Warning级别
  2. 开发环境:可以启用Debug级别
  3. 问题排查:临时启用Trace级别获取更详细的信息
  4. 性能敏感代码:使用defer kembadebug.TraceTime()来测量函数执行时间

与其他日志库比较

kembadebug相比标准库log或zap等日志库的优势:

  1. 更轻量级
  2. 专门为CLI应用优化
  3. 简单的日志级别控制
  4. 内置性能追踪功能

总结

kembadebug是一个简单实用的Golang调试日志工具,特别适合命令行应用的开发。通过灵活的日志级别控制和简洁的API,它可以帮助开发者快速定位问题,同时保持生产环境的日志干净整洁。

希望这个指南能帮助你有效地使用kembadebug来提升你的Golang CLI应用的开发效率!

回到顶部