From b1f41d0ff1ee3e227d1d6e40ff7e215a2280dba2 Mon Sep 17 00:00:00 2001
From: Matthew Holt <mholt@users.noreply.github.com>
Date: Mon, 4 Nov 2019 12:14:22 -0700
Subject: [PATCH] logging: Default logger should use wall time with
 milliseconds

This format is easier for humans to read and is still very precise.
---
 logging.go | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/logging.go b/logging.go
index c29a0fa28..e809617a4 100644
--- a/logging.go
+++ b/logging.go
@@ -337,7 +337,7 @@ func (cl *CustomLog) provision(ctx Context, logging *Logging) error {
 		cl.encoder = val.(zapcore.Encoder)
 	}
 	if cl.encoder == nil {
-		cl.encoder = zapcore.NewConsoleEncoder(zap.NewProductionEncoderConfig())
+		cl.encoder = newDefaultProductionLogEncoder()
 	}
 
 	if cl.WriterRaw != nil {
@@ -576,9 +576,7 @@ func newDefaultProductionLog() (*defaultCustomLog, error) {
 	if err != nil {
 		return nil, err
 	}
-	encCfg := zap.NewProductionEncoderConfig()
-	encCfg.EncodeLevel = zapcore.CapitalColorLevelEncoder
-	cl.encoder = zapcore.NewConsoleEncoder(encCfg)
+	cl.encoder = newDefaultProductionLogEncoder()
 	cl.levelEnabler = zapcore.InfoLevel
 
 	cl.buildCore()
@@ -589,6 +587,15 @@ func newDefaultProductionLog() (*defaultCustomLog, error) {
 	}, nil
 }
 
+func newDefaultProductionLogEncoder() zapcore.Encoder {
+	encCfg := zap.NewProductionEncoderConfig()
+	encCfg.EncodeLevel = zapcore.CapitalColorLevelEncoder
+	encCfg.EncodeTime = func(ts time.Time, encoder zapcore.PrimitiveArrayEncoder) {
+		encoder.AppendString(ts.UTC().Format("2006/01/02 15:04:05.000"))
+	}
+	return zapcore.NewConsoleEncoder(encCfg)
+}
+
 // Log returns the current default logger.
 func Log() *zap.Logger {
 	defaultLoggerMu.RLock()