Mercurial > yakumo_izuru > aya
comparison vendor/github.com/sirupsen/logrus/formatter.go @ 66:787b5ee0289d draft
Use vendored modules
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author | yakumo.izuru |
---|---|
date | Sun, 23 Jul 2023 13:18:53 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
65:6d985efa0f7a | 66:787b5ee0289d |
---|---|
1 package logrus | |
2 | |
3 import "time" | |
4 | |
5 // Default key names for the default fields | |
6 const ( | |
7 defaultTimestampFormat = time.RFC3339 | |
8 FieldKeyMsg = "msg" | |
9 FieldKeyLevel = "level" | |
10 FieldKeyTime = "time" | |
11 FieldKeyLogrusError = "logrus_error" | |
12 FieldKeyFunc = "func" | |
13 FieldKeyFile = "file" | |
14 ) | |
15 | |
16 // The Formatter interface is used to implement a custom Formatter. It takes an | |
17 // `Entry`. It exposes all the fields, including the default ones: | |
18 // | |
19 // * `entry.Data["msg"]`. The message passed from Info, Warn, Error .. | |
20 // * `entry.Data["time"]`. The timestamp. | |
21 // * `entry.Data["level"]. The level the entry was logged at. | |
22 // | |
23 // Any additional fields added with `WithField` or `WithFields` are also in | |
24 // `entry.Data`. Format is expected to return an array of bytes which are then | |
25 // logged to `logger.Out`. | |
26 type Formatter interface { | |
27 Format(*Entry) ([]byte, error) | |
28 } | |
29 | |
30 // This is to not silently overwrite `time`, `msg`, `func` and `level` fields when | |
31 // dumping it. If this code wasn't there doing: | |
32 // | |
33 // logrus.WithField("level", 1).Info("hello") | |
34 // | |
35 // Would just silently drop the user provided level. Instead with this code | |
36 // it'll logged as: | |
37 // | |
38 // {"level": "info", "fields.level": 1, "msg": "hello", "time": "..."} | |
39 // | |
40 // It's not exported because it's still using Data in an opinionated way. It's to | |
41 // avoid code duplication between the two default formatters. | |
42 func prefixFieldClashes(data Fields, fieldMap FieldMap, reportCaller bool) { | |
43 timeKey := fieldMap.resolve(FieldKeyTime) | |
44 if t, ok := data[timeKey]; ok { | |
45 data["fields."+timeKey] = t | |
46 delete(data, timeKey) | |
47 } | |
48 | |
49 msgKey := fieldMap.resolve(FieldKeyMsg) | |
50 if m, ok := data[msgKey]; ok { | |
51 data["fields."+msgKey] = m | |
52 delete(data, msgKey) | |
53 } | |
54 | |
55 levelKey := fieldMap.resolve(FieldKeyLevel) | |
56 if l, ok := data[levelKey]; ok { | |
57 data["fields."+levelKey] = l | |
58 delete(data, levelKey) | |
59 } | |
60 | |
61 logrusErrKey := fieldMap.resolve(FieldKeyLogrusError) | |
62 if l, ok := data[logrusErrKey]; ok { | |
63 data["fields."+logrusErrKey] = l | |
64 delete(data, logrusErrKey) | |
65 } | |
66 | |
67 // If reportCaller is not set, 'func' will not conflict. | |
68 if reportCaller { | |
69 funcKey := fieldMap.resolve(FieldKeyFunc) | |
70 if l, ok := data[funcKey]; ok { | |
71 data["fields."+funcKey] = l | |
72 } | |
73 fileKey := fieldMap.resolve(FieldKeyFile) | |
74 if l, ok := data[fileKey]; ok { | |
75 data["fields."+fileKey] = l | |
76 } | |
77 } | |
78 } |