mirror of
https://github.com/prometheus/node_exporter.git
synced 2024-12-19 15:06:06 +01:00
33f99c4fc1
Uses godep to vendor dependencies. Godeps is not necessary during build, golang's new vendor support is used instead.
49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package logrus
|
|
|
|
import "time"
|
|
|
|
const DefaultTimestampFormat = time.RFC3339
|
|
|
|
// The Formatter interface is used to implement a custom Formatter. It takes an
|
|
// `Entry`. It exposes all the fields, including the default ones:
|
|
//
|
|
// * `entry.Data["msg"]`. The message passed from Info, Warn, Error ..
|
|
// * `entry.Data["time"]`. The timestamp.
|
|
// * `entry.Data["level"]. The level the entry was logged at.
|
|
//
|
|
// Any additional fields added with `WithField` or `WithFields` are also in
|
|
// `entry.Data`. Format is expected to return an array of bytes which are then
|
|
// logged to `logger.Out`.
|
|
type Formatter interface {
|
|
Format(*Entry) ([]byte, error)
|
|
}
|
|
|
|
// This is to not silently overwrite `time`, `msg` and `level` fields when
|
|
// dumping it. If this code wasn't there doing:
|
|
//
|
|
// logrus.WithField("level", 1).Info("hello")
|
|
//
|
|
// Would just silently drop the user provided level. Instead with this code
|
|
// it'll logged as:
|
|
//
|
|
// {"level": "info", "fields.level": 1, "msg": "hello", "time": "..."}
|
|
//
|
|
// It's not exported because it's still using Data in an opinionated way. It's to
|
|
// avoid code duplication between the two default formatters.
|
|
func prefixFieldClashes(data Fields) {
|
|
_, ok := data["time"]
|
|
if ok {
|
|
data["fields.time"] = data["time"]
|
|
}
|
|
|
|
_, ok = data["msg"]
|
|
if ok {
|
|
data["fields.msg"] = data["msg"]
|
|
}
|
|
|
|
_, ok = data["level"]
|
|
if ok {
|
|
data["fields.level"] = data["level"]
|
|
}
|
|
}
|