Skip to content

Commit 6316484

Browse files
committed
feat: add journald-friendly log format
Pass structured log data to journald using its native protocol [1]. [1] https://systemd.io/JOURNAL_NATIVE_PROTOCOL/ Signed-off-by: Michael Adler <michael.adler@siemens.com>
1 parent bf581d7 commit 6316484

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

cmd/wfx/cmd/config/flags.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ func NewFlagset() *pflag.FlagSet {
116116

117117
allLevels := []string{zerolog.TraceLevel.String(), zerolog.DebugLevel.String(), zerolog.InfoLevel.String(), zerolog.WarnLevel.String(), zerolog.ErrorLevel.String(), zerolog.FatalLevel.String(), zerolog.PanicLevel.String()}
118118
f.String(LogLevelFlag, "info", fmt.Sprintf("set log level. one of: [%s]", strings.Join(allLevels, ", ")))
119-
f.String(LogFormatFlag, "auto", "log format; possible values: json, pretty, auto")
119+
f.String(LogFormatFlag, "auto", "log format; possible values: json, pretty, journald, auto")
120120
return f
121121
}
122122

cmd/wfx/cmd/root/setup.go

+13-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import (
1313
"os"
1414
"time"
1515

16+
"github.com/coreos/go-systemd/v22/journal"
1617
"github.com/rs/zerolog"
18+
"github.com/rs/zerolog/journald"
1719
"github.com/rs/zerolog/log"
1820
"golang.org/x/term"
1921
)
@@ -26,19 +28,27 @@ func setupLogging(out *os.File, format string, lvl zerolog.Level) {
2628
if term.IsTerminal(int(out.Fd())) {
2729
format = "pretty"
2830
} else {
29-
format = "json"
31+
if ok, _ := journal.StderrIsJournalStream(); ok {
32+
format = "journald"
33+
} else {
34+
format = "json"
35+
}
3036
}
3137
}
3238
switch format {
3339
case "json":
34-
logger = zerolog.New(out).With().Caller().Logger()
40+
logger = zerolog.New(out)
3541
case "pretty":
3642
logger = zerolog.New(zerolog.ConsoleWriter{
3743
Out: out,
3844
TimeFormat: time.Stamp,
3945
})
46+
case "journald":
47+
logger = zerolog.New(journald.NewJournalDWriter())
4048
default:
41-
fmt.Fprintf(os.Stderr, "Invalid log format: %s\n", format)
49+
fmt.Fprintf(os.Stderr, "Invalid log format specified: %s\n", format)
4250
}
4351
log.Logger = logger.With().Timestamp().Caller().Logger()
52+
53+
log.Debug().Str("format", format).Msg("Logging configured successfully")
4454
}

0 commit comments

Comments
 (0)