gosuki/logging/log.go

85 lines
2.1 KiB
Go
Raw Normal View History

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
}