代码拉取完成,页面将自动刷新
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{}
)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。