From b4db76cedbd99bfcfb1c12444c5bd84e92ac01dc Mon Sep 17 00:00:00 2001 From: Jesse Hallam Date: Fri, 11 May 2018 12:56:54 -0400 Subject: fix mlog-ing before initialized (#8753) Dump mlog to STDOUT before initialized, to allow for logging failures that occur due to config parsing, etc. Fix file logging to honour logger.FileJson instead of copying the logger.ConsoleJson setting. --- mlog/default.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 mlog/default.go (limited to 'mlog/default.go') diff --git a/mlog/default.go b/mlog/default.go new file mode 100644 index 000000000..366d22f88 --- /dev/null +++ b/mlog/default.go @@ -0,0 +1,50 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package mlog + +import ( + "encoding/json" + "fmt" +) + +// defaultLog manually encodes the log to STDOUT, providing a basic, default logging implementation +// before mlog is fully configured. +func defaultLog(level, msg string, fields ...Field) { + log := struct { + Level string `json:"level"` + Message string `json:"msg"` + Fields []Field `json:"fields,omitempty"` + }{ + level, + msg, + fields, + } + + if b, err := json.Marshal(log); err != nil { + fmt.Printf(`{"level":"error","msg":"failed to encode log message"}%s`, "\n") + } else { + fmt.Printf("%s\n", b) + } +} + +func defaultDebugLog(msg string, fields ...Field) { + defaultLog("debug", msg, fields...) +} + +func defaultInfoLog(msg string, fields ...Field) { + defaultLog("info", msg, fields...) +} + +func defaultWarnLog(msg string, fields ...Field) { + defaultLog("warn", msg, fields...) +} + +func defaultErrorLog(msg string, fields ...Field) { + defaultLog("error", msg, fields...) +} + +func defaultCriticalLog(msg string, fields ...Field) { + // We map critical to error in zap, so be consistent. + defaultLog("error", msg, fields...) +} -- cgit v1.2.3-1-g7c22