2019-11-01 15:27:44 +00:00
|
|
|
package logger
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
2019-11-03 09:50:23 +00:00
|
|
|
"os"
|
2019-11-02 17:00:06 +00:00
|
|
|
"sync"
|
2019-11-01 15:27:44 +00:00
|
|
|
"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{}
|
2019-11-11 09:22:55 +00:00
|
|
|
var enabled = false
|
2019-11-01 15:27:44 +00:00
|
|
|
|
|
|
|
func Spinner(i int) {
|
2019-11-11 09:22:55 +00:00
|
|
|
m.Lock()
|
|
|
|
defer m.Unlock()
|
2019-11-01 15:27:44 +00:00
|
|
|
if i > 43 {
|
|
|
|
i = 43
|
|
|
|
}
|
|
|
|
|
2019-11-11 09:22:55 +00:00
|
|
|
if s == nil {
|
|
|
|
s = spinner.New(spinner.CharSets[i], 100*time.Millisecond) // Build our new spinner
|
|
|
|
}
|
|
|
|
enabled = true
|
|
|
|
s.Start() // Start the spinner
|
2019-11-01 15:27:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
|
}
|
2019-11-01 15:27:44 +00:00
|
|
|
s.Suffix = Bold(Magenta(suffix)).BgBlack().String()
|
|
|
|
s.Prefix = Bold(Cyan(prefix)).String()
|
|
|
|
}
|
|
|
|
|
|
|
|
func SpinnerStop() {
|
2019-11-11 09:22:55 +00:00
|
|
|
m.Lock()
|
|
|
|
defer m.Unlock()
|
2019-11-01 15:27:44 +00:00
|
|
|
s.Stop()
|
2019-11-11 09:22:55 +00:00
|
|
|
enabled = false
|
2019-11-01 15:27:44 +00:00
|
|
|
}
|
|
|
|
|
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-01 15:27:44 +00:00
|
|
|
}
|
2019-11-03 09:50:23 +00:00
|
|
|
|
2019-11-11 09:22:55 +00:00
|
|
|
if enabled {
|
2019-11-13 16:07:59 +00:00
|
|
|
SpinnerText(levelMsg, "")
|
2019-11-03 11:02:33 +00:00
|
|
|
return
|
2019-11-01 15:27:44 +00:00
|
|
|
}
|
2019-11-03 09:50:23 +00:00
|
|
|
|
2019-11-13 16:07:59 +00:00
|
|
|
cmd := []interface{}{}
|
2019-11-01 15:27:44 +00:00
|
|
|
for _, f := range msg {
|
|
|
|
cmd = append(cmd, f)
|
|
|
|
}
|
2019-11-11 09:22:55 +00:00
|
|
|
m.Lock()
|
|
|
|
defer m.Unlock()
|
2019-11-13 16:07:59 +00:00
|
|
|
fmt.Println(levelMsg)
|
|
|
|
//fmt.Println(cmd...)
|
2019-11-01 15:27:44 +00:00
|
|
|
}
|
|
|
|
|
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-01 15:27:44 +00:00
|
|
|
}
|
|
|
|
|
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)
|
2019-11-01 15:27:44 +00:00
|
|
|
}
|