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系统上会显示彩色输出:
在Mac系统上会显示彩色输出:
这个示例展示了如何创建一个基本的日志记录器,添加前缀符号,并确保线程安全。你可以根据需要调整前缀符号和颜色配置。
更多关于golang跨平台彩色并发日志记录插件库wlog的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于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")
}
性能优化建议
- 对于生产环境,建议将日志级别设置为
LevelWarn
或LevelError
- 高频日志可以考虑使用异步写入模式
- 合理设置日志文件大小和滚动策略
注意事项
- Windows系统需要启用ANSI颜色支持才能显示彩色日志
- 文件输出和终端输出可以同时启用
- 日志级别从低到高为:Debug < Info < Warn < Error < Fatal
wlog是一个简单易用但功能完备的日志库,适合大多数Go应用程序的日志需求。它的彩色输出特别适合开发调试阶段使用,而文件输出和级别控制则适合生产环境。