1
0
mirror of https://github.com/newnius/YAO-scheduler.git synced 2025-06-06 05:51:54 +00:00

add custom logger to support mute certain modules

This commit is contained in:
Newnius 2020-07-17 11:09:18 +08:00
parent 04e6dfd472
commit e695414b1d

99
src/logger.go Normal file
View File

@ -0,0 +1,99 @@
package main
import (
_log "github.com/sirupsen/logrus"
"io"
"sync"
"runtime"
"fmt"
)
type Logger struct {
DebugLevel int
InfoLevel int
WarnLevel int
LoggerLevel string `json:"logger.level"`
LoggerModuleDisabled map[string]bool `json:"logger.modules_disabled"`
mu sync.Mutex
}
func (logger *Logger) Init() {
logger.LoggerLevel = "Info"
logger.LoggerModuleDisabled = map[string]bool{}
}
func (logger *Logger) Debug(args ... interface{}) {
_log.Debug(args)
}
func (logger *Logger) Info(args ... interface{}) {
pc, _, _, ok := runtime.Caller(1)
details := runtime.FuncForPC(pc)
if ok && details != nil {
fmt.Printf("called from %s\n", details.Name())
}
_log.Info(args)
}
func (logger *Logger) Warn(args ... interface{}) {
_log.Warn(args)
}
func (logger *Logger) Fatal(args ... interface{}) {
_log.Fatal(args)
}
func (logger *Logger) Fatalf(format string, args ... interface{}) {
_log.Fatalf(format, args)
}
func (logger *Logger) SetOutput(f io.Writer) {
_log.SetOutput(f)
}
func (logger *Logger) SetLoggerLevel(value string) bool {
switch value {
case "Debug":
_log.SetLevel(_log.DebugLevel)
break
case "Info":
_log.SetLevel(_log.InfoLevel)
break
case "Warn":
_log.SetLevel(_log.WarnLevel)
break
default:
return false
}
logger.LoggerLevel = value
_log.Info("logger.level is set to ", value)
return true
}
func (logger *Logger) LoggerEnableModule(module string) bool {
logger.mu.Lock()
defer logger.mu.Unlock()
if len(module) == 0 {
return false
}
delete(logger.LoggerModuleDisabled, module)
return true
}
func (logger *Logger) LoggerDisableModule(module string) bool {
logger.mu.Lock()
defer logger.mu.Unlock()
if len(module) == 0 {
return false
}
logger.LoggerModuleDisabled[module] = true
return true
}
func (logger *Logger) LoggerIsModuleEnabled(module string) bool {
logger.mu.Lock()
defer logger.mu.Unlock()
_, ok := logger.LoggerModuleDisabled[module]
return !ok
}