Skip to content

Commit

Permalink
Add extra fields prefix (#44)
Browse files Browse the repository at this point in the history
* Add extra fields prefix

* WIP Using objects in the extra fields data

* WIP Fix default data copy to final data

* Only add to prefix key if it's not present on default data
  • Loading branch information
Felipe Matos Malinoski authored and guilherme-santos committed May 18, 2018
1 parent 5fb7cd3 commit b54c182
Showing 1 changed file with 19 additions and 5 deletions.
24 changes: 19 additions & 5 deletions ranger_logger/logrus.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ type LoggerInterface interface {

//Wrapper - Wrap a logrus logger
type Wrapper struct {
*logrus.Logger // see promoted methods https://www.goinggo.net/2015/09/composition-with-go.html,
AppData LoggerData // default fields
*logrus.Logger // see promoted methods https://www.goinggo.net/2015/09/composition-with-go.html,
DefaultData LoggerData // default fields
ExtraDataPrefix string
}

// JSONFormatter Wrapper for logrus.JSONFormatter
Expand Down Expand Up @@ -65,7 +66,7 @@ func NewLogger(out io.Writer, appData LoggerData, f Formatter, logLevel string,
}
}

return &Wrapper{log, appData}
return &Wrapper{log, appData, ""}
}

//CreateFieldsFromRequest - Create a logrus.Fields object from a Request
Expand Down Expand Up @@ -125,13 +126,26 @@ func convertToLogrusFields(loggerData LoggerData) logrus.Fields {
func (logger *Wrapper) GetAllFieldsToLog(data LoggerData) LoggerData {
result := make(LoggerData)

for k, v := range logger.AppData {
for k, v := range logger.DefaultData {
result[k] = v
}

ctx := LoggerData{}
for k, v := range data {
result[k] = v
if _, ok := result[k]; !ok && logger.ExtraDataPrefix != "" {
ctx[k] = v
} else {
result[k] = v
}
}

if len(ctx) > 0 {
result[logger.ExtraDataPrefix] = ctx
}

return result
}

func (logger *Wrapper) SetPrefix(p string) {
logger.ExtraDataPrefix = p
}

0 comments on commit b54c182

Please sign in to comment.