From 637edb0235c3302234dcc2f556293f102146de3f Mon Sep 17 00:00:00 2001
From: Andrei Baker
Date: Tue, 22 Jan 2019 11:47:56 +0000
Subject: [PATCH] Added stackdriver severity compatibility, fixed panic logging
---
fluentd.go | 32 +++++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
diff --git a/fluentd.go b/fluentd.go
index 05100b3..7699b26 100644
--- a/fluentd.go
+++ b/fluentd.go
@@ -8,10 +8,35 @@ import (
"github.com/sirupsen/logrus"
)
+// Default logrus to FluentD severity map
+var SeverityMap = map[string]string {
+ "panic": "fatal",
+ "fatal": "fatal",
+ "warning" : "warn",
+ "debug": "debug",
+ "error": "error",
+ "trace": "trace",
+ "info": "info",
+}
+
+// logrus to stackdriver severity map
+func UseStackdriverSeverity(){
+ SeverityMap = map[string]string {
+ "panic": "CRITICAL",
+ "fatal": "CRITICAL",
+ "warning" : "WARNING",
+ "debug": "DEBUG",
+ "error": "ERROR",
+ "trace": "DEBUG",
+ "info": "INFO",
+ }
+}
+
// FluentdFormatter is similar to logrus.JSONFormatter but with log level that are recongnized
// by kubernetes fluentd.
type FluentdFormatter struct {
TimestampFormat string
+ SeverityMap map[string]string
}
// Format the log entry. Implements logrus.Formatter.
@@ -36,7 +61,12 @@ func (f *FluentdFormatter) Format(entry *logrus.Entry) ([]byte, error) {
data["time"] = entry.Time.Format(timestampFormat)
data["message"] = entry.Message
- data["severity"] = entry.Level.String()
+
+ if ms, ok := SeverityMap[entry.Level.String()]; ok {
+ data["severity"] = ms
+ } else {
+ data["severity"] = SeverityMap["debug"]
+ }
serialized, err := json.Marshal(data)
if err != nil {