64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package internal
|
|
|
|
import (
|
|
"github.com/apsdehal/go-logger"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
var Log *logger.Logger
|
|
var documenterLoggers map[string]*logger.Logger
|
|
var verbose bool
|
|
|
|
var formatNormal string = "%{message}"
|
|
var formatVerbose string = "%{time} %{level}: %{message}"
|
|
var formatModuleNormal string = "%{module}: %{message}"
|
|
var formatModuleVerbose string = "%{time} %{level} %{module}: %{message}"
|
|
|
|
func InitLogger() error {
|
|
var err error
|
|
Log, err = logger.New("UsbDisconnect", 1, os.Stdout)
|
|
|
|
if err != nil {
|
|
return fmt.Errorf("Logger initialization error: %s", err)
|
|
}
|
|
|
|
documenterLoggers = make(map[string]*logger.Logger)
|
|
verbose = false
|
|
Log.SetLogLevel(logger.InfoLevel)
|
|
|
|
return nil
|
|
}
|
|
|
|
func LogDoc(documenter Documenter) *logger.Logger {
|
|
documenterLogger, ok := documenterLoggers[documenter.GetName()]
|
|
|
|
if !ok {
|
|
documenterLogger, _ = logger.New(documenter.GetName(), 1, os.Stdout)
|
|
documenterLoggers[documenter.GetName()] = documenterLogger
|
|
}
|
|
|
|
SetVerbose(verbose)
|
|
//documenterLogger.SetFormat("%{message}")
|
|
|
|
return documenterLogger
|
|
}
|
|
|
|
func SetVerbose(value bool) {
|
|
verbose = value
|
|
toggleVerbosity := func(l *logger.Logger, formatN string, formatV string) {
|
|
if value {
|
|
l.SetLogLevel(logger.DebugLevel)
|
|
l.SetFormat(formatV)
|
|
} else {
|
|
l.SetLogLevel(logger.InfoLevel)
|
|
l.SetFormat(formatN)
|
|
}
|
|
}
|
|
|
|
toggleVerbosity(Log, formatNormal, formatVerbose)
|
|
for _, documenterLogger := range documenterLoggers {
|
|
toggleVerbosity(documenterLogger, formatModuleNormal, formatModuleVerbose)
|
|
}
|
|
}
|