diff options
Diffstat (limited to 'utils/logger/log4go_json_writer.go')
-rw-r--r-- | utils/logger/log4go_json_writer.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/utils/logger/log4go_json_writer.go b/utils/logger/log4go_json_writer.go new file mode 100644 index 000000000..97a8af76b --- /dev/null +++ b/utils/logger/log4go_json_writer.go @@ -0,0 +1,27 @@ +// glue functions that allow logger.go to leverage log4Go to write JSON-formatted log records to a file + +package logger + +import ( + l4g "github.com/alecthomas/log4go" + "github.com/mattermost/platform/utils" +) + +// newJSONLogWriter is a utility method for creating a FileLogWriter set up to +// output JSON record log messages instead of line-based ones. +func newJSONLogWriter(fname string, rotate bool) *l4g.FileLogWriter { + return l4g.NewFileLogWriter(fname, rotate).SetFormat( + `{"level": "%L", + "timestamp": "%D %T", + "source": "%S", + "message": %M + }`).SetRotateLines(utils.LOG_ROTATE_SIZE) +} + +// NewJSONFileLogger - Create a new logger with a "file" filter configured to send JSON-formatted log messages at +// or above lvl to a file with the specified filename. +func NewJSONFileLogger(lvl l4g.Level, filename string) l4g.Logger { + return l4g.Logger{ + "file": &l4g.Filter{Level: lvl, LogWriter: newJSONLogWriter(filename, true)}, + } +} |