WithFields adds a map of fields to the Entry.
(fields Fields)
| 126 | |
| 127 | // WithFields adds a map of fields to the Entry. |
| 128 | func (entry *Entry) WithFields(fields Fields) *Entry { |
| 129 | data := make(Fields, len(entry.Data)+len(fields)) |
| 130 | for k, v := range entry.Data { |
| 131 | data[k] = v |
| 132 | } |
| 133 | fieldErr := entry.err |
| 134 | for k, v := range fields { |
| 135 | isErrField := false |
| 136 | if t := reflect.TypeOf(v); t != nil { |
| 137 | switch { |
| 138 | case t.Kind() == reflect.Func, t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Func: |
| 139 | isErrField = true |
| 140 | } |
| 141 | } |
| 142 | if isErrField { |
| 143 | tmp := fmt.Sprintf("can not add field %q", k) |
| 144 | if fieldErr != "" { |
| 145 | fieldErr = entry.err + ", " + tmp |
| 146 | } else { |
| 147 | fieldErr = tmp |
| 148 | } |
| 149 | } else { |
| 150 | data[k] = v |
| 151 | } |
| 152 | } |
| 153 | return &Entry{Logger: entry.Logger, Data: data, Time: entry.Time, err: fieldErr, Context: entry.Context} |
| 154 | } |
| 155 | |
| 156 | // WithTime overrides the time of the Entry. |
| 157 | func (entry *Entry) WithTime(t time.Time) *Entry { |
no outgoing calls