2018-11-09 17:25:50 +00:00
|
|
|
package logging
|
|
|
|
|
|
|
|
import (
|
2018-11-10 11:47:30 +00:00
|
|
|
"fmt"
|
2018-11-09 17:25:50 +00:00
|
|
|
"os"
|
|
|
|
|
|
|
|
glogging "github.com/op/go-logging"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Logger = glogging.Logger
|
|
|
|
|
|
|
|
const (
|
2018-11-10 11:47:30 +00:00
|
|
|
debugDefaultFmt = `%{color} %{time:15:04:05.000} %{level:.4s} %{shortfunc:.10s}: %{color:reset} %{message}`
|
2018-11-20 17:33:37 +00:00
|
|
|
debugFmt = `%{color} %{time:15:04:05.000} %{level:.4s} [%{module:.4s}] %{shortfile}:%{shortfunc:.10s}: %{color:reset} %{message}`
|
2018-11-10 11:47:30 +00:00
|
|
|
releaseFmt = `[%{level}] - %{message}`
|
2018-11-09 17:25:50 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
stdoutBackend = glogging.NewLogBackend(os.Stderr, "", 0)
|
2018-11-10 11:47:30 +00:00
|
|
|
debugFormatter = glogging.MustStringFormatter(debugFmt)
|
|
|
|
debugDefaultFormatter = glogging.MustStringFormatter(debugDefaultFmt)
|
|
|
|
releaseFormatter = glogging.MustStringFormatter(releaseFmt)
|
2018-11-09 17:25:50 +00:00
|
|
|
|
2018-11-10 11:47:30 +00:00
|
|
|
debugBackend = glogging.NewBackendFormatter(stdoutBackend, debugFormatter)
|
|
|
|
debugDefaultBackend = glogging.NewBackendFormatter(stdoutBackend, debugDefaultFormatter)
|
|
|
|
releaseBackend = glogging.NewBackendFormatter(stdoutBackend, releaseFormatter)
|
|
|
|
|
|
|
|
debugMode bool
|
|
|
|
loggers map[string]*glogging.Logger
|
|
|
|
usedLoggers map[string]bool
|
|
|
|
|
|
|
|
// Default debug leveledBacked
|
|
|
|
leveledDefaultDebug = glogging.AddModuleLevel(debugDefaultBackend)
|
|
|
|
leveledDebug = glogging.AddModuleLevel(debugBackend)
|
|
|
|
leveledRelease = glogging.AddModuleLevel(releaseBackend)
|
2018-11-09 17:25:50 +00:00
|
|
|
)
|
|
|
|
|
2018-11-10 11:47:30 +00:00
|
|
|
// Register which loggers to use
|
|
|
|
func UseLogger(module string) {
|
|
|
|
usedLoggers[module] = true
|
|
|
|
}
|
|
|
|
|
2018-11-09 17:25:50 +00:00
|
|
|
func GetLogger(module string) *glogging.Logger {
|
2018-11-10 11:47:30 +00:00
|
|
|
logger := glogging.MustGetLogger(module)
|
|
|
|
if len(module) > 0 {
|
|
|
|
loggers[module] = logger
|
|
|
|
} else {
|
|
|
|
loggers["default"] = logger
|
|
|
|
}
|
|
|
|
|
|
|
|
if debugMode {
|
|
|
|
if len(module) > 0 {
|
|
|
|
logger.SetBackend(leveledDebug)
|
|
|
|
} else {
|
|
|
|
logger.SetBackend(leveledDefaultDebug)
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
logger.SetBackend(leveledRelease)
|
|
|
|
}
|
|
|
|
|
|
|
|
return logger
|
2018-11-09 17:25:50 +00:00
|
|
|
}
|
|
|
|
|
2018-11-10 11:47:30 +00:00
|
|
|
func SetDebug(d bool) {
|
|
|
|
debugMode = d
|
|
|
|
|
|
|
|
if !debugMode {
|
|
|
|
for m, log := range loggers {
|
|
|
|
fmt.Println(m)
|
|
|
|
log.SetBackend(leveledRelease)
|
|
|
|
}
|
|
|
|
}
|
2018-11-09 17:25:50 +00:00
|
|
|
}
|
|
|
|
|
2018-11-10 11:47:30 +00:00
|
|
|
func init() {
|
|
|
|
debugMode = IsDebugging()
|
|
|
|
// init global vars
|
|
|
|
loggers = make(map[string]*glogging.Logger)
|
|
|
|
// Sets the default backend for all new loggers
|
|
|
|
glogging.SetBackend(debugDefaultBackend)
|
|
|
|
|
|
|
|
// Release level
|
|
|
|
leveledRelease.SetLevel(glogging.WARNING, "")
|
2018-11-09 17:25:50 +00:00
|
|
|
}
|