@marcel91200 / caddy Mirror · read-only / commits / 6e4c688e
Fork 0

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

Mirrored from https://github.com/Slazee/caddy.git

Synced Nov 14, 05:15 UTC

logging: Only colorize console output

Matthew Holt committed Apr 8, 2020 at 14:37 UTC 6e4c688ea7b9354fabad07c6bc5d7afa9c446691
1 file changed +22 -14
logging.go
+22 -14
@@ -396,17 +396,6 @@ func (cl *CustomLog) provision(ctx Context, logging *Logging) error {
396 }
397 }
398
399 - if cl.EncoderRaw != nil {
400 - mod, err := ctx.LoadModule(cl, "EncoderRaw")
401 - if err != nil {
402 - return fmt.Errorf("loading log encoder module: %v", err)
403 - }
404 - cl.encoder = mod.(zapcore.Encoder)
405 - }
406 - if cl.encoder == nil {
407 - cl.encoder = newDefaultProductionLogEncoder()
408 - }
409 -
399 if cl.WriterRaw != nil {
400 mod, err := ctx.LoadModule(cl, "WriterRaw")
401 if err != nil {
@@ -423,6 +412,23 @@ func (cl *CustomLog) provision(ctx Context, logging *Logging) error {
412 return fmt.Errorf("opening log writer using %#v: %v", cl.writerOpener, err)
413 }
414
415 + if cl.EncoderRaw != nil {
416 + mod, err := ctx.LoadModule(cl, "EncoderRaw")
417 + if err != nil {
418 + return fmt.Errorf("loading log encoder module: %v", err)
419 + }
420 + cl.encoder = mod.(zapcore.Encoder)
421 + }
422 + if cl.encoder == nil {
423 + // only allow colorized output if this log is going to stdout or stderr
424 + var colorize bool
425 + switch cl.writerOpener.(type) {
426 + case *StdoutWriter, *StderrWriter:
427 + colorize = true
428 + }
429 + cl.encoder = newDefaultProductionLogEncoder(colorize)
430 + }
431 +
432 cl.buildCore()
433
434 return nil
@@ -650,7 +656,7 @@ func newDefaultProductionLog() (*defaultCustomLog, error) {
656 if err != nil {
657 return nil, err
658 }
653 - cl.encoder = newDefaultProductionLogEncoder()
659 + cl.encoder = newDefaultProductionLogEncoder(true)
660 cl.levelEnabler = zapcore.InfoLevel
661
662 cl.buildCore()
@@ -661,14 +667,16 @@ func newDefaultProductionLog() (*defaultCustomLog, error) {
667 }, nil
668 }
669
664 -func newDefaultProductionLogEncoder() zapcore.Encoder {
670 +func newDefaultProductionLogEncoder(colorize bool) zapcore.Encoder {
671 encCfg := zap.NewProductionEncoderConfig()
672 if terminal.IsTerminal(int(os.Stdout.Fd())) {
673 // if interactive terminal, make output more human-readable by default
674 encCfg.EncodeTime = func(ts time.Time, encoder zapcore.PrimitiveArrayEncoder) {
675 encoder.AppendString(ts.UTC().Format("2006/01/02 15:04:05.000"))
676 }
671 - encCfg.EncodeLevel = zapcore.CapitalColorLevelEncoder
677 + if colorize {
678 + encCfg.EncodeLevel = zapcore.CapitalColorLevelEncoder
679 + }
680 return zapcore.NewConsoleEncoder(encCfg)
681 }
682 return zapcore.NewJSONEncoder(encCfg)