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)