luet/pkg/logger/logger.go

102 lines
1.7 KiB
Go
Raw Normal View History

package logger
import (
"fmt"
2019-11-03 09:50:23 +00:00
"os"
2019-11-02 17:00:06 +00:00
"sync"
"time"
. "github.com/logrusorgru/aurora"
"github.com/briandowns/spinner"
)
var s *spinner.Spinner
2019-11-02 17:00:06 +00:00
var m = &sync.Mutex{}
var enabled = false
func Spinner(i int) {
m.Lock()
defer m.Unlock()
if i > 43 {
i = 43
}
if s == nil {
s = spinner.New(spinner.CharSets[i], 100*time.Millisecond) // Build our new spinner
}
enabled = true
s.Start() // Start the spinner
}
func SpinnerText(suffix, prefix string) {
2019-11-02 17:00:06 +00:00
m.Lock()
defer m.Unlock()
2019-11-12 07:48:07 +00:00
if s == nil {
s = spinner.New(spinner.CharSets[22], 100*time.Millisecond) // Build our new spinner
}
s.Suffix = Bold(Magenta(suffix)).BgBlack().String()
s.Prefix = Bold(Cyan(prefix)).String()
}
func SpinnerStop() {
m.Lock()
defer m.Unlock()
s.Stop()
enabled = false
}
2019-11-03 09:50:23 +00:00
func msg(level string, msg ...interface{}) {
2019-11-13 16:07:59 +00:00
var message string
for _, m := range msg {
message += " " + fmt.Sprintf("%v", m)
}
2019-11-03 09:50:23 +00:00
var levelMsg string
switch level {
case "warning":
2019-11-13 16:07:59 +00:00
levelMsg = Bold(Yellow(message)).BgBlack().String()
2019-11-03 09:50:23 +00:00
case "debug":
2019-11-13 16:07:59 +00:00
levelMsg = Bold(White(message)).BgBlack().String()
2019-11-03 09:50:23 +00:00
case "info":
2019-11-13 16:07:59 +00:00
levelMsg = Bold(Blue(message)).BgBlack().String()
2019-11-03 09:50:23 +00:00
case "error":
2019-11-13 16:07:59 +00:00
levelMsg = Bold(Red(message)).BgBlack().String()
}
2019-11-03 09:50:23 +00:00
if enabled {
2019-11-13 16:07:59 +00:00
SpinnerText(levelMsg, "")
return
}
2019-11-03 09:50:23 +00:00
2019-11-13 16:07:59 +00:00
cmd := []interface{}{}
for _, f := range msg {
cmd = append(cmd, f)
}
m.Lock()
defer m.Unlock()
2019-11-13 16:07:59 +00:00
fmt.Println(levelMsg)
//fmt.Println(cmd...)
}
2019-11-03 09:50:23 +00:00
func Warning(mess ...interface{}) {
2019-11-13 16:07:59 +00:00
msg("warning", mess...)
}
2019-11-03 09:50:23 +00:00
func Debug(mess ...interface{}) {
2019-11-13 16:07:59 +00:00
msg("debug", mess...)
2019-11-03 09:50:23 +00:00
}
func Info(mess ...interface{}) {
2019-11-13 16:07:59 +00:00
msg("info", mess...)
2019-11-03 09:50:23 +00:00
}
func Error(mess ...interface{}) {
2019-11-13 16:07:59 +00:00
msg("error", mess...)
2019-11-03 09:50:23 +00:00
}
func Fatal(mess ...interface{}) {
Error(mess)
os.Exit(1)
}