Vendor sirupsen/logrus@1.3.0
Signed-off-by: John Howard <jhoward@microsoft.com>
This commit is contained in:
		
							
								
								
									
										54
									
								
								vendor/github.com/sirupsen/logrus/json_formatter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								vendor/github.com/sirupsen/logrus/json_formatter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,7 @@ | ||||
| package logrus | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| ) | ||||
| @@ -10,13 +11,6 @@ type fieldKey string | ||||
| // FieldMap allows customization of the key names for default fields. | ||||
| type FieldMap map[fieldKey]string | ||||
|  | ||||
| // Default key names for the default fields | ||||
| const ( | ||||
| 	FieldKeyMsg   = "msg" | ||||
| 	FieldKeyLevel = "level" | ||||
| 	FieldKeyTime  = "time" | ||||
| ) | ||||
|  | ||||
| func (f FieldMap) resolve(key fieldKey) string { | ||||
| 	if k, ok := f[key]; ok { | ||||
| 		return k | ||||
| @@ -33,21 +27,28 @@ type JSONFormatter struct { | ||||
| 	// DisableTimestamp allows disabling automatic timestamps in output | ||||
| 	DisableTimestamp bool | ||||
|  | ||||
| 	// DataKey allows users to put all the log entry parameters into a nested dictionary at a given key. | ||||
| 	DataKey string | ||||
|  | ||||
| 	// FieldMap allows users to customize the names of keys for default fields. | ||||
| 	// As an example: | ||||
| 	// formatter := &JSONFormatter{ | ||||
| 	//   	FieldMap: FieldMap{ | ||||
| 	// 		 FieldKeyTime: "@timestamp", | ||||
| 	// 		 FieldKeyTime:  "@timestamp", | ||||
| 	// 		 FieldKeyLevel: "@level", | ||||
| 	// 		 FieldKeyMsg: "@message", | ||||
| 	// 		 FieldKeyMsg:   "@message", | ||||
| 	// 		 FieldKeyFunc:  "@caller", | ||||
| 	//    }, | ||||
| 	// } | ||||
| 	FieldMap FieldMap | ||||
|  | ||||
| 	// PrettyPrint will indent all json logs | ||||
| 	PrettyPrint bool | ||||
| } | ||||
|  | ||||
| // Format renders a single log entry | ||||
| func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) { | ||||
| 	data := make(Fields, len(entry.Data)+3) | ||||
| 	data := make(Fields, len(entry.Data)+4) | ||||
| 	for k, v := range entry.Data { | ||||
| 		switch v := v.(type) { | ||||
| 		case error: | ||||
| @@ -58,22 +59,47 @@ func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) { | ||||
| 			data[k] = v | ||||
| 		} | ||||
| 	} | ||||
| 	prefixFieldClashes(data) | ||||
|  | ||||
| 	if f.DataKey != "" { | ||||
| 		newData := make(Fields, 4) | ||||
| 		newData[f.DataKey] = data | ||||
| 		data = newData | ||||
| 	} | ||||
|  | ||||
| 	prefixFieldClashes(data, f.FieldMap, entry.HasCaller()) | ||||
|  | ||||
| 	timestampFormat := f.TimestampFormat | ||||
| 	if timestampFormat == "" { | ||||
| 		timestampFormat = defaultTimestampFormat | ||||
| 	} | ||||
|  | ||||
| 	if entry.err != "" { | ||||
| 		data[f.FieldMap.resolve(FieldKeyLogrusError)] = entry.err | ||||
| 	} | ||||
| 	if !f.DisableTimestamp { | ||||
| 		data[f.FieldMap.resolve(FieldKeyTime)] = entry.Time.Format(timestampFormat) | ||||
| 	} | ||||
| 	data[f.FieldMap.resolve(FieldKeyMsg)] = entry.Message | ||||
| 	data[f.FieldMap.resolve(FieldKeyLevel)] = entry.Level.String() | ||||
| 	if entry.HasCaller() { | ||||
| 		data[f.FieldMap.resolve(FieldKeyFunc)] = entry.Caller.Function | ||||
| 		data[f.FieldMap.resolve(FieldKeyFile)] = fmt.Sprintf("%s:%d", entry.Caller.File, entry.Caller.Line) | ||||
| 	} | ||||
|  | ||||
| 	serialized, err := json.Marshal(data) | ||||
| 	if err != nil { | ||||
| 	var b *bytes.Buffer | ||||
| 	if entry.Buffer != nil { | ||||
| 		b = entry.Buffer | ||||
| 	} else { | ||||
| 		b = &bytes.Buffer{} | ||||
| 	} | ||||
|  | ||||
| 	encoder := json.NewEncoder(b) | ||||
| 	if f.PrettyPrint { | ||||
| 		encoder.SetIndent("", "  ") | ||||
| 	} | ||||
| 	if err := encoder.Encode(data); err != nil { | ||||
| 		return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err) | ||||
| 	} | ||||
| 	return append(serialized, '\n'), nil | ||||
|  | ||||
| 	return b.Bytes(), nil | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 John Howard
					John Howard