summaryrefslogtreecommitdiffstats
path: root/utils/logger/log4go_json_writer.go
diff options
context:
space:
mode:
Diffstat (limited to 'utils/logger/log4go_json_writer.go')
-rw-r--r--utils/logger/log4go_json_writer.go27
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)},
+ }
+}