Skip to content

Commit 53aec01

Browse files
authored
Add options for JSON logger and no color console logging (#22)
Add new global flags `--enable-json-logger` to enable JSON logs. When JSON logs aren't enabled, `--no-color` can be given to disable ANSI colors in the console output.
1 parent c3fd64f commit 53aec01

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@ Flags:
231231
Global Flags:
232232
-d, --debug enable debug logging
233233
--disable-journal-logger disable zerolog journald logger
234+
--enable-json-logger enable JSON logging
235+
--no-color disable colored logging
234236
--trace enable trace logging
235237
```
236238

cmd/root.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,14 @@ func init() {
2525
rootCmd.PersistentFlags().BoolVar(&trace, "trace", false, "enable trace logging")
2626
viper.BindPFlag("trace", rootCmd.Flags().Lookup("trace"))
2727

28-
rootCmd.PersistentFlags().BoolVar(&config.ZeroLogJournalDEnabled, "disable-journal-logger", false, "disable zerolog journald logger")
28+
rootCmd.PersistentFlags().BoolVar(&config.ZeroLogJournalDDisabled, "disable-journal-logger", false, "disable zerolog journald logger")
2929
viper.BindPFlag("disable-journal-logger", rootCmd.Flags().Lookup("disable-journal-logger"))
30+
31+
rootCmd.PersistentFlags().BoolVar(&config.ZeroLogNoColor, "no-color", false, "disable colored logging")
32+
viper.BindPFlag("no-color", rootCmd.Flags().Lookup("no-color"))
33+
34+
rootCmd.PersistentFlags().BoolVar(&config.ZeroLogEnableJSONLogger, "enable-json-logger", false, "enable JSON logging")
35+
viper.BindPFlag("enable-json-logger", rootCmd.Flags().Lookup("enable-json-logger"))
3036
}
3137

3238
var rootCmd = &cobra.Command{

config/zerolog.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ import (
1010
)
1111

1212
var (
13-
zerologInitDone bool // to prevent zerolog to be initialized twice in specific situations (like parsing error of viper configuration file)
14-
ZeroLogJournalDEnabled bool // used by viper to store the status of the --disable-journal-logger flag
13+
zerologInitDone bool // to prevent zerolog to be initialized twice in specific situations (like parsing error of viper configuration file)
14+
ZeroLogJournalDDisabled bool // used by viper to store the status of the --disable-journal-logger flag
15+
ZeroLogNoColor bool // used by viper to store the status of the --no-color flag
16+
ZeroLogEnableJSONLogger bool // used by viper to store the status of the --enable-json-logger flag
1517
)
1618

1719
func init() {
@@ -23,12 +25,17 @@ func init() {
2325

2426
func InitZeroLog() {
2527
if !zerologInitDone {
26-
if ZeroLogJournalDEnabled {
27-
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
28+
var output io.Writer
29+
output = os.Stderr
30+
if !ZeroLogEnableJSONLogger {
31+
output = zerolog.ConsoleWriter{Out: os.Stderr, NoColor: ZeroLogNoColor}
32+
}
33+
if ZeroLogJournalDDisabled {
34+
log.Logger = log.Output(output)
2835
log.Debug().Msg("Enabled console writer")
2936
} else {
3037
journalWriter := journald.NewJournalDWriter()
31-
multi := io.MultiWriter(zerolog.ConsoleWriter{Out: os.Stderr}, journalWriter)
38+
multi := io.MultiWriter(output, journalWriter)
3239
log.Logger = log.Output(multi)
3340
log.Debug().Msg("Enabled journald writer")
3441
}

0 commit comments

Comments
 (0)