log update

pull/1/head
兔子 5 years ago
parent 9fa54452ec
commit 22162048be

@ -10,8 +10,10 @@ import (
"time"
"github.com/fatih/color"
"github.com/mattn/go-colorable"
)
// Base attributes
const (
BLUE = color.FgBlue
BLACK = color.FgBlack
@ -21,10 +23,11 @@ const (
RED = color.FgRed
WHITE = color.FgWhite
YELLOW = color.FgYellow
GREY = color.FgHiYellow
GREY = color.FgHiRed
BOLD = color.Bold
)
// Log Level
const (
LvDebug = iota
LvInfo
@ -36,6 +39,7 @@ const (
LvFatal
)
// Log Init Data
var (
levels = map[int]string{
LvDebug: "DEBUG",
@ -62,10 +66,15 @@ var (
loghandle *os.File = nil
HandleFunc func([]color.Attribute, string)
lock sync.WaitGroup
waiting = make(chan int, 1)
)
// Output 使用此进行windows支持
var Output = colorable.NewColorableStdout()
func write(logs string) {
var i int = 0
var i int
lock.Add(1)
defer lock.Done()
for switching {
time.Sleep(time.Millisecond * 100)
@ -82,6 +91,10 @@ func write(logs string) {
func output(level int, showline, showlv, dowrite, doshow bool, strlog string) {
var logs string
waiting <- 1
defer func() {
<-waiting
}()
if level < LogLevel {
return
}
@ -98,67 +111,59 @@ func output(level int, showline, showlv, dowrite, doshow bool, strlog string) {
logs = fmt.Sprintf("%s %s", date, strlog)
}
if doshow {
for _, v := range Colors[level] {
color.Set(v)
}
fmt.Print(logs)
color.Set(color.Reset)
logcolor := color.New(Colors[level]...)
logstr := logcolor.Sprint(logs)
fmt.Fprint(Output, logstr)
}
if HandleFunc != nil {
go HandleFunc(Colors[level], logs)
}
if dowrite {
lock.Add(1)
write(logs)
}
}
// StdPrint 进行stdout标准输出
func StdPrint(c1, c2 color.Attribute, str ...interface{}) {
color.Set(c1)
color.Set(c2)
fmt.Print(str...)
color.Set(color.Reset)
waiting <- 1
defer func() {
<-waiting
}()
colorstr := color.New(c1, c2)
colorstr.Fprint(Output, str...)
}
func StdPrintf(c1, c2 color.Attribute, format string, str ...interface{}) {
color.Set(c1)
color.Set(c2)
fmt.Printf(format, str...)
color.Set(color.Reset)
waiting <- 1
defer func() {
<-waiting
}()
colorstr := color.New(c1, c2)
colorstr.Fprintf(Output, format, str...)
}
func StdPrintln(c1, c2 color.Attribute, str ...interface{}) {
color.Set(c1)
color.Set(c2)
fmt.Println(str...)
color.Set(color.Reset)
waiting <- 1
defer func() {
<-waiting
}()
colorstr := color.New(c1, c2)
colorstr.Fprintln(Output, str...)
}
func Print(c1, c2 color.Attribute, str ...interface{}) {
color.Set(c1)
color.Set(c2)
strs := fmt.Sprint(str...)
fmt.Print(strs)
color.Set(color.Reset)
write(strs)
StdPrint(c1, c2, str...)
write(fmt.Sprint(str...))
}
func Printf(c1, c2 color.Attribute, format string, str ...interface{}) {
color.Set(c1)
color.Set(c2)
strs := fmt.Sprintf(format, str...)
fmt.Print(strs)
color.Set(color.Reset)
write(strs)
StdPrintf(c1, c2, format, str...)
write(fmt.Sprintf(format, str...))
}
func Println(c1, c2 color.Attribute, str ...interface{}) {
color.Set(c1)
color.Set(c2)
strs := fmt.Sprintln(str...)
fmt.Print(strs)
color.Set(color.Reset)
write(strs)
StdPrintln(c1, c2, str...)
write(fmt.Sprintln(str...))
}
func Debug(str ...interface{}) {

Loading…
Cancel
Save