github.com/dschalla/mattermost-server@v4.8.1-rc1+incompatible/utils/logger/log4go_json_writer.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 // glue functions that allow logger.go to leverage log4Go to write JSON-formatted log records to a file 5 6 package logger 7 8 import ( 9 l4g "github.com/alecthomas/log4go" 10 "github.com/mattermost/mattermost-server/utils" 11 ) 12 13 // newJSONLogWriter is a utility method for creating a FileLogWriter set up to 14 // output JSON record log messages instead of line-based ones. 15 func newJSONLogWriter(fname string, rotate bool) *l4g.FileLogWriter { 16 return l4g.NewFileLogWriter(fname, rotate).SetFormat( 17 `{"level": "%L", 18 "timestamp": "%D %T", 19 "source": "%S", 20 "message": %M 21 }`).SetRotateLines(utils.LOG_ROTATE_SIZE) 22 } 23 24 // NewJSONFileLogger - Create a new logger with a "file" filter configured to send JSON-formatted log messages at 25 // or above lvl to a file with the specified filename. 26 func NewJSONFileLogger(lvl l4g.Level, filename string) l4g.Logger { 27 return l4g.Logger{ 28 "file": &l4g.Filter{Level: lvl, LogWriter: newJSONLogWriter(filename, false)}, 29 } 30 }