log: add object and objectType to json logs

This commit is contained in:
justina777 2019-08-02 22:57:09 +08:00 committed by Nick Craig-Wood
parent c2635e39cc
commit 94ee43fe54

View File

@ -77,25 +77,33 @@ var LogPrint = func(level LogLevel, text string) {
// LogPrintf produces a log string from the arguments passed in
func LogPrintf(level LogLevel, o interface{}, text string, args ...interface{}) {
out := fmt.Sprintf(text, args...)
if o != nil {
out = fmt.Sprintf("%v: %s", o, out)
}
if Config.UseJSONLog {
fields := logrus.Fields{}
if o != nil {
fields = logrus.Fields{
"object": fmt.Sprintf("%+v", o),
"objectType": fmt.Sprintf("%T", o),
}
}
switch level {
case LogLevelDebug:
logrus.Debug(out)
logrus.WithFields(fields).Debug(out)
case LogLevelInfo:
logrus.Info(out)
logrus.WithFields(fields).Info(out)
case LogLevelNotice, LogLevelWarning:
logrus.Warn(out)
logrus.WithFields(fields).Warn(out)
case LogLevelError:
logrus.Error(out)
logrus.WithFields(fields).Error(out)
case LogLevelCritical:
logrus.Fatal(out)
logrus.WithFields(fields).Fatal(out)
case LogLevelEmergency, LogLevelAlert:
logrus.Panic(out)
logrus.WithFields(fields).Panic(out)
}
} else {
if o != nil {
out = fmt.Sprintf("%v: %s", o, out)
}
LogPrint(level, out)
}
}