Add more log customization options
This commit is contained in:
+9
-1
@@ -13,6 +13,7 @@ import (
|
|||||||
|
|
||||||
"github.com/AlexxIT/go2rtc/pkg/shell"
|
"github.com/AlexxIT/go2rtc/pkg/shell"
|
||||||
"github.com/AlexxIT/go2rtc/pkg/yaml"
|
"github.com/AlexxIT/go2rtc/pkg/yaml"
|
||||||
|
"github.com/rs/zerolog"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -117,9 +118,16 @@ func Init() {
|
|||||||
Mod map[string]string `yaml:"log"`
|
Mod map[string]string `yaml:"log"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cfg.Mod = map[string]string{
|
||||||
|
"format": "color",
|
||||||
|
"level": zerolog.LevelInfoValue,
|
||||||
|
"output": "stdout", // TODO: change to stderr someday
|
||||||
|
"time": zerolog.TimeFormatUnixMs,
|
||||||
|
}
|
||||||
|
|
||||||
LoadConfig(&cfg)
|
LoadConfig(&cfg)
|
||||||
|
|
||||||
log.Logger = NewLogger(cfg.Mod["format"], cfg.Mod["level"])
|
log.Logger = NewLogger(cfg.Mod)
|
||||||
|
|
||||||
modules = cfg.Mod
|
modules = cfg.Mod
|
||||||
|
|
||||||
|
|||||||
+44
-15
@@ -8,29 +8,58 @@ import (
|
|||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
var MemoryLog *circularBuffer
|
var MemoryLog = newBuffer(16)
|
||||||
|
|
||||||
func NewLogger(format string, level string) zerolog.Logger {
|
func NewLogger(config map[string]string) zerolog.Logger {
|
||||||
var writer io.Writer = os.Stdout
|
var writer io.Writer
|
||||||
|
|
||||||
if format != "json" {
|
// support output only to memory
|
||||||
writer = zerolog.ConsoleWriter{
|
switch config["output"] {
|
||||||
Out: writer, TimeFormat: "15:04:05.000", NoColor: format == "text",
|
case "stderr":
|
||||||
|
writer = os.Stderr
|
||||||
|
case "stdout":
|
||||||
|
writer = os.Stdout
|
||||||
|
}
|
||||||
|
|
||||||
|
timeFormat := config["time"]
|
||||||
|
|
||||||
|
if writer != nil {
|
||||||
|
switch format := config["format"]; format {
|
||||||
|
case "color", "text":
|
||||||
|
if timeFormat != "" {
|
||||||
|
writer = &zerolog.ConsoleWriter{
|
||||||
|
Out: writer,
|
||||||
|
NoColor: format == "text",
|
||||||
|
TimeFormat: "15:04:05.000",
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
writer = &zerolog.ConsoleWriter{
|
||||||
|
Out: writer,
|
||||||
|
NoColor: format == "text",
|
||||||
|
PartsOrder: []string{
|
||||||
|
zerolog.LevelFieldName,
|
||||||
|
zerolog.CallerFieldName,
|
||||||
|
zerolog.MessageFieldName,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case "json": // none
|
||||||
}
|
}
|
||||||
|
|
||||||
|
writer = zerolog.MultiLevelWriter(writer, MemoryLog)
|
||||||
|
} else {
|
||||||
|
writer = MemoryLog
|
||||||
}
|
}
|
||||||
|
|
||||||
MemoryLog = newBuffer(16)
|
logger := zerolog.New(writer)
|
||||||
|
|
||||||
writer = zerolog.MultiLevelWriter(writer, MemoryLog)
|
if timeFormat != "" {
|
||||||
|
zerolog.TimeFieldFormat = timeFormat
|
||||||
zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
|
logger = logger.With().Timestamp().Logger()
|
||||||
|
|
||||||
lvl, err := zerolog.ParseLevel(level)
|
|
||||||
if err != nil || lvl == zerolog.NoLevel {
|
|
||||||
lvl = zerolog.InfoLevel
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return zerolog.New(writer).With().Timestamp().Logger().Level(lvl)
|
lvl, _ := zerolog.ParseLevel(config["level"])
|
||||||
|
return logger.Level(lvl)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetLogger(module string) zerolog.Logger {
|
func GetLogger(module string) zerolog.Logger {
|
||||||
|
|||||||
Reference in New Issue
Block a user