golang跨平台彩色并发日志记录插件库wlog的使用

Golang跨平台彩色并发日志记录插件库wlog的使用

WLog简介

WLog是一个简单易用的UI结构包,主要用于屏幕输出。它提供了多种包装器可以相互组合,创建美观的UI界面。你可以添加颜色和前缀,同时保证线程安全。

安装

可以通过以下命令将WLog添加到你的Go模块文件中:

go get github.com/dixonwille/wlog/v3@latest

然后在代码中导入:

import "github.com/dixonwille/wlog/v3"

WLog的设计理念

WLog的设计灵感来源于Mitchellh的CLI结构和包装方式,提供了简洁的外观和使用体验。同时去除了不需要的CLI功能。

对于颜色支持,WLog使用了DavidDenGCN的Go-ColorText包,该包提供了跨平台的颜色支持。WLog对其进行了封装,提供了所有可能的颜色组合。

示例用法

以下是一个完整的示例,展示了如何创建wlog.UI实例,模拟用户输入并调用各种UI输出函数:

package main

import (
	"os"
	"strings"
	"github.com/dixonwille/wlog/v3"
)

func main() {
	var ui wlog.UI
	reader := strings.NewReader("User Input\r\n") // 模拟用户输入"User Input"并按回车
	ui = wlog.New(reader, os.Stdout, os.Stdout)
	
	// 添加前缀和并发支持
	ui = wlog.AddPrefix("?", wlog.Cross, " ", "", "", "~", wlog.Check, "!", ui)
	ui = wlog.AddConcurrent(ui)

	// 调用各种日志方法
	ui.Ask("Ask question", "")
	ui.Error("Error message")
	ui.Info("Info message")
	ui.Output("Output message")
	ui.Running("Running message")
	ui.Success("Success message")
	ui.Warn("Warning message")
}

输出结果:

? Ask question
✗ Error message
 Info message
Output message
~ Running message
✓ Success message
! Warning message

在Windows系统上会显示彩色输出:

winss

在Mac系统上会显示彩色输出:

macss

这个示例展示了如何创建一个基本的日志记录器,添加前缀符号,并确保线程安全。你可以根据需要调整前缀符号和颜色配置。


更多关于golang跨平台彩色并发日志记录插件库wlog的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang跨平台彩色并发日志记录插件库wlog的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


wlog - Go语言跨平台彩色并发日志记录库

wlog是一个轻量级的Go语言日志库,支持跨平台彩色输出、并发安全和多种日志级别。下面我将详细介绍其使用方法。

基本特性

  • 跨平台支持(Windows/Linux/macOS)
  • 线程安全(并发写入)
  • 彩色终端输出
  • 多日志级别(DEBUG, INFO, WARN, ERROR, FATAL)
  • 自定义输出格式
  • 支持输出到文件和控制台

安装

go get github.com/xxjwxc/wlog

基本使用示例

package main

import (
	"github.com/xxjwxc/wlog"
)

func main() {
	// 简单日志输出
	wlog.Debug("This is a debug message")
	wlog.Info("This is an info message")
	wlog.Warn("This is a warning message")
	wlog.Error("This is an error message")
	
	// 带格式的输出
	wlog.Infof("User %s logged in at %v", "Alice", time.Now())
	
	// 错误日志带堆栈
	wlog.ErrorStack("Something went wrong")
}

高级配置

package main

import (
	"os"
	"time"
	
	"github.com/xxjwxc/wlog"
)

func main() {
	// 初始化日志配置
	wlog.SetOutputFile("app.log", 10) // 输出到文件,最大10MB
	wlog.SetLevel(wlog.LevelInfo)    // 设置日志级别为Info及以上
	wlog.SetColor(true)              // 启用彩色输出
	wlog.SetTimeFormat("2006-01-02 15:04:05.000") // 自定义时间格式
	
	// 添加控制台输出
	wlog.AddWriter(os.Stdout)
	
	// 使用日志
	wlog.Debug("This won't be logged") // 低于Info级别不记录
	wlog.Info("Application started")
	
	// 结构化日志
	wlog.WithFields(wlog.Fields{
		"user": "bob",
		"ip":   "127.0.0.1",
	}).Info("User login")
}

并发日志示例

package main

import (
	"sync"
	"time"
	
	"github.com/xxjwxc/wlog"
)

func worker(id int, wg *sync.WaitGroup) {
	defer wg.Done()
	
	for i := 0; i < 5; i++ {
		wlog.Infof("Worker %d processing task %d", id, i)
		time.Sleep(time.Millisecond * 100)
	}
}

func main() {
	var wg sync.WaitGroup
	
	for i := 1; i <= 3; i++ {
		wg.Add(1)
		go worker(i, &wg)
	}
	
	wg.Wait()
	wlog.Info("All workers completed")
}

自定义日志格式

package main

import (
	"github.com/xxjwxc/wlog"
)

func main() {
	// 自定义格式
	wlog.SetFormatter(func(level wlog.Level, msg string) string {
		return fmt.Sprintf("[%s] %s - %s\n", 
			time.Now().Format("2006-01-02 15:04:05"), 
			level.String(), 
			msg)
	})
	
	wlog.Info("Custom format message")
}

性能优化建议

  1. 对于生产环境,建议将日志级别设置为LevelWarnLevelError
  2. 高频日志可以考虑使用异步写入模式
  3. 合理设置日志文件大小和滚动策略

注意事项

  1. Windows系统需要启用ANSI颜色支持才能显示彩色日志
  2. 文件输出和终端输出可以同时启用
  3. 日志级别从低到高为:Debug < Info < Warn < Error < Fatal

wlog是一个简单易用但功能完备的日志库,适合大多数Go应用程序的日志需求。它的彩色输出特别适合开发调试阶段使用,而文件输出和级别控制则适合生产环境。

回到顶部