1 Star 0 Fork 0

kzangv / gsf-ai-agent

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
trace_log.go 2.96 KB
一键复制 编辑 原始数据 按行查看 历史
kzangv 提交于 2024-01-31 20:03 . fixed
package utils
import (
"bytes"
"io"
"log"
)
type LogMode int
const (
LogModeIgnore LogMode = 100
LogModeDebug LogMode = 1
LogModeWarming LogMode = 2
LogModeError LogMode = 3
// Colors
_TraceLogColorReset = "\033[0m"
_TraceLogColorRedBold = "\033[1;31m"
_TraceLogColorGreenBold = "\033[1;32m"
_TraceLogColorYellowBold = "\033[1;33m"
_TraceLogColorBlueBold = "\033[1;34m"
_TraceLogColorMagentaBold = "\033[1;35m"
_TraceLogColorCyanBold = "\033[1;36m"
_TraceLogColorWhiteBold = "\033[1;37m"
)
type TraceLog interface {
LogMode() LogMode
Debug(func() string)
Warn(func() string)
Error(func() string)
DebugForce(func() string)
WarnForce(func() string)
ErrorForce(func() string)
}
type TraceLogConsole struct {
level LogMode
stdOutput *log.Logger
errOutput *log.Logger
debugStr, warnStr, errStr string
}
func (output *TraceLogConsole) LogMode() LogMode {
return output.level
}
func (output *TraceLogConsole) SetLevel(val LogMode) LogMode {
old := output.level
output.level = val
return old
}
func (output *TraceLogConsole) Init(level LogMode, colorful bool, normal, err io.Writer) {
output.level = level
output.stdOutput = log.New(normal, "", log.Ldate|log.Lmicroseconds)
output.errOutput = log.New(err, "", log.Ldate|log.Lmicroseconds)
if colorful {
output.debugStr = _TraceLogColorWhiteBold + "[Debug] " + _TraceLogColorReset
output.warnStr = _TraceLogColorMagentaBold + "[Warn] " + _TraceLogColorReset
output.errStr = _TraceLogColorRedBold + "[Error] " + _TraceLogColorReset
} else {
output.debugStr = "[Debug] "
output.warnStr = "[Warn] "
output.errStr = "[Error] "
}
}
func (output *TraceLogConsole) Debug(f func() string) {
if LogModeDebug >= output.level {
output.DebugForce(f)
}
}
func (output *TraceLogConsole) Warn(f func() string) {
if LogModeWarming >= output.level {
output.WarnForce(f)
}
}
func (output *TraceLogConsole) Error(f func() string) {
if LogModeError >= output.level {
output.ErrorForce(f)
}
}
func (output *TraceLogConsole) DebugForce(f func() string) {
var buff bytes.Buffer
buff.WriteString(output.debugStr)
buff.WriteString(f())
output.stdOutput.Println(buff.String())
}
func (output *TraceLogConsole) WarnForce(f func() string) {
var buff bytes.Buffer
buff.WriteString(output.warnStr)
buff.WriteString(f())
output.stdOutput.Println(buff.String())
}
func (output *TraceLogConsole) ErrorForce(f func() string) {
var buff bytes.Buffer
buff.WriteString(output.errStr)
buff.WriteString(f())
output.stdOutput.Println(buff.String())
}
type TraceLogNull struct {
}
func (t *TraceLogNull) LogMode() LogMode {
return LogModeIgnore
}
func (t *TraceLogNull) Debug(f func() string) {
}
func (t *TraceLogNull) Warn(f func() string) {
}
func (t *TraceLogNull) Error(f func() string) {
}
func (t *TraceLogNull) DebugForce(f func() string) {
}
func (t *TraceLogNull) WarnForce(f func() string) {
}
func (t *TraceLogNull) ErrorForce(f func() string) {
}
var (
DefaultTraceLog = &TraceLogNull{}
)
Go
1
https://gitee.com/kzangv/gsf-ai-agent.git
git@gitee.com:kzangv/gsf-ai-agent.git
kzangv
gsf-ai-agent
gsf-ai-agent
v0.0.7

搜索帮助