CreateStderrLogger creates a logger that outputs to stderr to avoid interfering with stdout
(c *cli.Context)
| 61 | |
| 62 | // CreateStderrLogger creates a logger that outputs to stderr to avoid interfering with stdout |
| 63 | func CreateStderrLogger(c *cli.Context) *zerolog.Logger { |
| 64 | level, levelErr := zerolog.ParseLevel(c.String(cfdflags.LogLevel)) |
| 65 | if levelErr != nil { |
| 66 | level = zerolog.InfoLevel |
| 67 | } |
| 68 | var writer io.Writer |
| 69 | switch c.String(cfdflags.LogFormatOutput) { |
| 70 | case cfdflags.LogFormatOutputValueJSON: |
| 71 | // zerolog by default outputs as JSON |
| 72 | writer = os.Stderr |
| 73 | case cfdflags.LogFormatOutputValueDefault: |
| 74 | // "default" and unset use the same logger output format |
| 75 | fallthrough |
| 76 | default: |
| 77 | writer = zerolog.ConsoleWriter{ |
| 78 | Out: colorable.NewColorable(os.Stderr), |
| 79 | TimeFormat: time.RFC3339, |
| 80 | } |
| 81 | } |
| 82 | log := zerolog.New(writer).With().Timestamp().Logger().Level(level) |
| 83 | return &log |
| 84 | } |
no test coverage detected