mirror of
https://github.com/zrepl/zrepl.git
synced 2025-06-18 07:46:47 +02:00
logging: support ignoring fields in HumanFormatter
should be refactored to logger one day so the implementation of ignoring is not duplicated to each outlet. refs #10
This commit is contained in:
parent
51377a8ffb
commit
ebf209427a
@ -41,12 +41,29 @@ func (f NoFormatter) Format(e *logger.Entry) ([]byte, error) {
|
|||||||
|
|
||||||
type HumanFormatter struct {
|
type HumanFormatter struct {
|
||||||
metadataFlags MetadataFlags
|
metadataFlags MetadataFlags
|
||||||
|
ignoreFields map[string]bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *HumanFormatter) SetMetadataFlags(flags MetadataFlags) {
|
func (f *HumanFormatter) SetMetadataFlags(flags MetadataFlags) {
|
||||||
f.metadataFlags = flags
|
f.metadataFlags = flags
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *HumanFormatter) SetIgnoreFields(ignore []string) {
|
||||||
|
if ignore == nil {
|
||||||
|
f.ignoreFields = nil
|
||||||
|
return
|
||||||
|
}
|
||||||
|
f.ignoreFields = make(map[string]bool, len(ignore))
|
||||||
|
|
||||||
|
for _, field := range ignore {
|
||||||
|
f.ignoreFields[field] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *HumanFormatter) ignored(field string) bool {
|
||||||
|
return f.ignoreFields != nil && f.ignoreFields[field]
|
||||||
|
}
|
||||||
|
|
||||||
func (f *HumanFormatter) Format(e *logger.Entry) (out []byte, err error) {
|
func (f *HumanFormatter) Format(e *logger.Entry) (out []byte, err error) {
|
||||||
|
|
||||||
var line bytes.Buffer
|
var line bytes.Buffer
|
||||||
@ -63,8 +80,10 @@ func (f *HumanFormatter) Format(e *logger.Entry) (out []byte, err error) {
|
|||||||
for _, field := range prefixFields {
|
for _, field := range prefixFields {
|
||||||
val, ok := e.Fields[field].(string)
|
val, ok := e.Fields[field].(string)
|
||||||
if ok {
|
if ok {
|
||||||
fmt.Fprintf(&line, "[%s]", val)
|
if !f.ignored(field) {
|
||||||
prefixed[field] = true
|
fmt.Fprintf(&line, "[%s]", val)
|
||||||
|
prefixed[field] = true
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -72,13 +91,13 @@ func (f *HumanFormatter) Format(e *logger.Entry) (out []byte, err error) {
|
|||||||
// even more prefix fields
|
// even more prefix fields
|
||||||
mapFrom, mapFromOk := e.Fields[logMapFromField].(string)
|
mapFrom, mapFromOk := e.Fields[logMapFromField].(string)
|
||||||
mapTo, mapToOk := e.Fields[logMapToField].(string)
|
mapTo, mapToOk := e.Fields[logMapToField].(string)
|
||||||
if mapFromOk && mapToOk {
|
if mapFromOk && mapToOk && !f.ignored(logMapFromField) && !f.ignored(logMapToField) {
|
||||||
fmt.Fprintf(&line, "[%s => %s]", mapFrom, mapTo)
|
fmt.Fprintf(&line, "[%s => %s]", mapFrom, mapTo)
|
||||||
prefixed[logMapFromField], prefixed[logMapToField] = true, true
|
prefixed[logMapFromField], prefixed[logMapToField] = true, true
|
||||||
}
|
}
|
||||||
incFrom, incFromOk := e.Fields[logIncFromField].(string)
|
incFrom, incFromOk := e.Fields[logIncFromField].(string)
|
||||||
incTo, incToOk := e.Fields[logIncToField].(string)
|
incTo, incToOk := e.Fields[logIncToField].(string)
|
||||||
if incFromOk && incToOk {
|
if incFromOk && incToOk && !f.ignored(logIncFromField) && !f.ignored(logMapToField) {
|
||||||
fmt.Fprintf(&line, "[%s => %s]", incFrom, incTo)
|
fmt.Fprintf(&line, "[%s => %s]", incFrom, incTo)
|
||||||
prefixed[logIncFromField], prefixed[logIncToField] = true, true
|
prefixed[logIncFromField], prefixed[logIncToField] = true, true
|
||||||
}
|
}
|
||||||
@ -92,7 +111,7 @@ func (f *HumanFormatter) Format(e *logger.Entry) (out []byte, err error) {
|
|||||||
fmt.Fprint(&line, " ")
|
fmt.Fprint(&line, " ")
|
||||||
enc := logfmt.NewEncoder(&line)
|
enc := logfmt.NewEncoder(&line)
|
||||||
for field, value := range e.Fields {
|
for field, value := range e.Fields {
|
||||||
if prefixed[field] {
|
if prefixed[field] || f.ignored(field) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err := logfmtTryEncodeKeyval(enc, field, value); err != nil {
|
if err := logfmtTryEncodeKeyval(enc, field, value); err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user