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  }