summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--go.mod2
-rw-r--r--go.sum4
-rw-r--r--matterbridge.go25
-rw-r--r--vendor/github.com/matterbridge/logrus-prefixed-formatter/formatter.go54
-rw-r--r--vendor/modules.txt2
5 files changed, 75 insertions, 12 deletions
diff --git a/go.mod b/go.mod
index dc1e29db..e29b3cb3 100644
--- a/go.mod
+++ b/go.mod
@@ -26,7 +26,7 @@ require (
github.com/matterbridge/go-xmpp v0.0.0-20200418225040-c8a3a57b4050
github.com/matterbridge/gomatrix v0.0.0-20200209224845-c2104d7936a6
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18
- github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61
+ github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba
github.com/mattermost/mattermost-server v5.5.0+incompatible
github.com/mattn/godown v0.0.0-20200217152941-afc959f6a561
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect
diff --git a/go.sum b/go.sum
index 436a03bd..c1e79f85 100644
--- a/go.sum
+++ b/go.sum
@@ -189,8 +189,8 @@ github.com/matterbridge/gomatrix v0.0.0-20200209224845-c2104d7936a6 h1:Kl65VJv38
github.com/matterbridge/gomatrix v0.0.0-20200209224845-c2104d7936a6/go.mod h1:+jWeaaUtXQbBRdKYWfjW6JDDYiI2XXE+3NnTjW5kg8g=
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18 h1:fLhwXtWGtfTgZVxHG1lcKjv+re7dRwyyuYFNu69xdho=
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18/go.mod h1:yAjnZ34DuDyPHMPHHjOsTk/FefW4JJjoMMCGt/8uuQA=
-github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61 h1:R/MgM/eUyRBQx2FiH6JVmXck8PaAuKfe2M1tWIzW7nE=
-github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61/go.mod h1:iXGEotOvwI1R1SjLxRc+BF5rUORTMtE0iMZBT2lxqAU=
+github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba h1:XleOY4IjAEIcxAh+IFwT5JT5Ze3RHiYz6m+4ZfZ0rc0=
+github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba/go.mod h1:iXGEotOvwI1R1SjLxRc+BF5rUORTMtE0iMZBT2lxqAU=
github.com/mattermost/mattermost-server v5.5.0+incompatible h1:0wcLGgYtd+YImtLDPf2AOfpBHxbU4suATx+6XKw1XbU=
github.com/mattermost/mattermost-server v5.5.0+incompatible/go.mod h1:5L6MjAec+XXQwMIt791Ganu45GKsSiM+I0tLR9wUj8Y=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
diff --git a/matterbridge.go b/matterbridge.go
index da0df103..24caa5d9 100644
--- a/matterbridge.go
+++ b/matterbridge.go
@@ -4,6 +4,7 @@ import (
"flag"
"fmt"
"os"
+ "runtime"
"strings"
"github.com/42wim/matterbridge/bridge/config"
@@ -67,17 +68,31 @@ func setupLogger() *logrus.Logger {
Formatter: &prefixed.TextFormatter{
PrefixPadding: 13,
DisableColors: true,
- FullTimestamp: true,
},
Level: logrus.InfoLevel,
}
if *flagDebug || os.Getenv("DEBUG") == "1" {
+ logger.SetReportCaller(true)
logger.Formatter = &prefixed.TextFormatter{
- PrefixPadding: 13,
- DisableColors: true,
- FullTimestamp: false,
- ForceFormatting: true,
+ PrefixPadding: 13,
+ DisableColors: true,
+ FullTimestamp: false,
+
+ CallerFormatter: func(function, file string) string {
+ return fmt.Sprintf(" [%s:%s]", function, file)
+ },
+ CallerPrettyfier: func(f *runtime.Frame) (string, string) {
+ sp := strings.SplitAfter(f.File, "/matterbridge/")
+ filename := f.File
+ if len(sp) > 1 {
+ filename = sp[1]
+ }
+ s := strings.Split(f.Function, ".")
+ funcName := s[len(s)-1]
+ return funcName, fmt.Sprintf("%s:%d", filename, f.Line)
+ },
}
+
logger.Level = logrus.DebugLevel
logger.WithFields(logrus.Fields{"prefix": "main"}).Info("Enabling debug logging.")
}
diff --git a/vendor/github.com/matterbridge/logrus-prefixed-formatter/formatter.go b/vendor/github.com/matterbridge/logrus-prefixed-formatter/formatter.go
index 7cb807da..434c2982 100644
--- a/vendor/github.com/matterbridge/logrus-prefixed-formatter/formatter.go
+++ b/vendor/github.com/matterbridge/logrus-prefixed-formatter/formatter.go
@@ -6,6 +6,7 @@ import (
"io"
"os"
"regexp"
+ "runtime"
"sort"
"strings"
"sync"
@@ -121,6 +122,14 @@ type TextFormatter struct {
// Whether the logger's out is to a terminal.
isTerminal bool
+ // CallerPrettyfier can be set by the user to modify the content
+ // of the function and file keys in the data when ReportCaller is
+ // activated. If any of the returned value is the empty string the
+ // corresponding key will be removed from fields.
+ CallerPrettyfier func(*runtime.Frame) (function string, file string)
+
+ CallerFormatter func(function, file string) string
+
sync.Once
}
@@ -217,6 +226,23 @@ func (f *TextFormatter) Format(entry *logrus.Entry) ([]byte, error) {
if entry.Message != "" {
f.appendKeyValue(b, "msg", entry.Message, lastKeyIdx >= 0)
}
+
+ if entry.HasCaller() {
+ var funcVal, fileVal string
+ if f.CallerPrettyfier != nil {
+ funcVal, fileVal = f.CallerPrettyfier(entry.Caller)
+ } else {
+ funcVal, fileVal = extractCallerInfo(entry.Caller)
+ }
+
+ if funcVal != "" {
+ f.appendKeyValue(b, "func", funcVal, true)
+ }
+ if fileVal != "" {
+ f.appendKeyValue(b, "file", fileVal, true)
+ }
+ }
+
for i, key := range keys {
f.appendKeyValue(b, key, entry.Data[key], lastKeyIdx != i)
}
@@ -276,7 +302,7 @@ func (f *TextFormatter) printColored(b *bytes.Buffer, entry *logrus.Entry, keys
prefixFormat := "%s"
if f.PrefixPadding != 0 {
- prefixFormat = fmt.Sprintf("%%-%ds", adjustedPrefixPadding)
+ prefixFormat = fmt.Sprintf("%%-%ds%%s", adjustedPrefixPadding)
}
messageFormat := "%s"
@@ -284,8 +310,24 @@ func (f *TextFormatter) printColored(b *bytes.Buffer, entry *logrus.Entry, keys
messageFormat = fmt.Sprintf("%%-%ds", f.SpacePadding)
}
+ caller := ""
+ if entry.HasCaller() {
+ var funcVal, fileVal string
+ if f.CallerPrettyfier != nil {
+ funcVal, fileVal = f.CallerPrettyfier(entry.Caller)
+ } else {
+ funcVal, fileVal = extractCallerInfo(entry.Caller)
+ }
+
+ if f.CallerFormatter != nil {
+ caller = f.CallerFormatter(funcVal, fileVal)
+ } else {
+ caller = fmt.Sprintf(" (%s: %s)", fileVal, funcVal)
+ }
+ }
+
if f.DisableTimestamp {
- fmt.Fprintf(b, "%s"+prefixFormat+" "+messageFormat, level, prefix, message)
+ fmt.Fprintf(b, "%s"+prefixFormat+" "+messageFormat, level, prefix, caller, message)
} else {
var timestamp string
if !f.FullTimestamp {
@@ -293,7 +335,7 @@ func (f *TextFormatter) printColored(b *bytes.Buffer, entry *logrus.Entry, keys
} else {
timestamp = fmt.Sprintf("[%s]", entry.Time.Format(timestampFormat))
}
- fmt.Fprintf(b, "%s %s"+prefixFormat+" "+messageFormat, colorScheme.TimestampColor(timestamp), level, prefix, message)
+ fmt.Fprintf(b, "%s %s"+prefixFormat+" "+messageFormat, colorScheme.TimestampColor(timestamp), level, prefix, caller, message)
}
for _, k := range keys {
if k != "prefix" {
@@ -318,6 +360,12 @@ func (f *TextFormatter) needsQuoting(text string) bool {
return false
}
+func extractCallerInfo(caller *runtime.Frame) (string, string) {
+ funcVal := caller.Function
+ fileVal := fmt.Sprintf("%s:%d", caller.File, caller.Line)
+ return funcVal, fileVal
+}
+
func extractPrefix(msg string) (string, string) {
prefix := ""
regex := regexp.MustCompile("^\\[(.*?)\\]")
diff --git a/vendor/modules.txt b/vendor/modules.txt
index f1893020..d940a05b 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -107,7 +107,7 @@ github.com/matterbridge/go-xmpp
github.com/matterbridge/gomatrix
# github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18
github.com/matterbridge/gozulipbot
-# github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61
+# github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba
github.com/matterbridge/logrus-prefixed-formatter
# github.com/mattermost/mattermost-server v5.5.0+incompatible
github.com/mattermost/mattermost-server/mlog