Skip to content

Commit

Permalink
Add more log customization options
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexxIT committed May 26, 2024
1 parent 8e571a6 commit 4534b4d
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 15 deletions.
10 changes: 9 additions & 1 deletion internal/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (

"github.com/AlexxIT/go2rtc/pkg/shell"
"github.com/AlexxIT/go2rtc/pkg/yaml"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)

Expand Down Expand Up @@ -117,9 +118,16 @@ func Init() {
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)

log.Logger = NewLogger(cfg.Mod["format"], cfg.Mod["level"])
log.Logger = NewLogger(cfg.Mod)

modules = cfg.Mod

Expand Down
57 changes: 43 additions & 14 deletions internal/app/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,58 @@ import (
"github.com/rs/zerolog/log"
)

var MemoryLog *circularBuffer
var MemoryLog = newBuffer(16)

func NewLogger(format string, level string) zerolog.Logger {
var writer io.Writer = os.Stdout
func NewLogger(config map[string]string) zerolog.Logger {
var writer io.Writer

if format != "json" {
writer = zerolog.ConsoleWriter{
Out: writer, TimeFormat: "15:04:05.000", NoColor: format == "text",
}
// support output only to memory
switch config["output"] {
case "stderr":
writer = os.Stderr
case "stdout":
writer = os.Stdout
}

MemoryLog = newBuffer(16)
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)
writer = zerolog.MultiLevelWriter(writer, MemoryLog)
} else {
writer = MemoryLog
}

zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
logger := zerolog.New(writer)

lvl, err := zerolog.ParseLevel(level)
if err != nil || lvl == zerolog.NoLevel {
lvl = zerolog.InfoLevel
if timeFormat != "" {
zerolog.TimeFieldFormat = timeFormat
logger = logger.With().Timestamp().Logger()
}

return zerolog.New(writer).With().Timestamp().Logger().Level(lvl)
lvl, _ := zerolog.ParseLevel(config["level"])
return logger.Level(lvl)
}

func GetLogger(module string) zerolog.Logger {
Expand Down

0 comments on commit 4534b4d

Please sign in to comment.