Skip to content

Commit 470a629

Browse files
committed
feature: auto-detect journald
* Prevents attempting to write to journald when it's not available * Prevents dual-logging to console & journald when stderr is redirected to journal
1 parent 86bdd39 commit 470a629

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

config/zerolog.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"io"
55
"os"
66

7+
"github.com/coreos/go-systemd/v22/journal"
78
"github.com/rs/zerolog"
89
"github.com/rs/zerolog/journald"
910
"github.com/rs/zerolog/log"
@@ -30,14 +31,22 @@ func InitZeroLog() {
3031
if !ZeroLogEnableJSONLogger {
3132
output = zerolog.ConsoleWriter{Out: os.Stderr, NoColor: ZeroLogNoColor}
3233
}
33-
if ZeroLogJournalDDisabled {
34+
journalErr, err := journal.StderrIsJournalStream()
35+
if err != nil {
36+
panic(err)
37+
}
38+
if ZeroLogJournalDDisabled || !journal.Enabled() {
3439
log.Logger = log.Output(output)
3540
log.Debug().Msg("Enabled console writer")
41+
} else if journalErr {
42+
journalWriter := journald.NewJournalDWriter()
43+
log.Logger = log.Output(journalWriter)
44+
log.Debug().Msg("Enabled journald writer")
3645
} else {
3746
journalWriter := journald.NewJournalDWriter()
3847
multi := io.MultiWriter(output, journalWriter)
3948
log.Logger = log.Output(multi)
40-
log.Debug().Msg("Enabled journald writer")
49+
log.Debug().Msg("Enabled console & journald writer")
4150
}
4251
zerologInitDone = true
4352
}

0 commit comments

Comments
 (0)