From 8c7c2e4af2e4e7ad842b959e2100855f6edadd68 Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Wed, 1 Jan 2020 10:26:37 -0700 Subject: logging: Little fix for filtering object fields --- modules/logging/filterencoder.go | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'modules/logging') diff --git a/modules/logging/filterencoder.go b/modules/logging/filterencoder.go index 6680019..36823fa 100644 --- a/modules/logging/filterencoder.go +++ b/modules/logging/filterencoder.go @@ -39,6 +39,11 @@ type FilterEncoder struct { // A map of field names to their filters. Note that this // is not a module map; the keys are field names. + // + // Nested fields can be referenced by representing a + // layer of nesting with `>`. In other words, for an + // object like `{"a":{"b":0}}`, the inner field can + // be referenced as `a>b`. FieldsRaw map[string]json.RawMessage `json:"fields,omitempty" caddy:"namespace=caddy.logging.encoders.filter inline_key=filter"` wrapped zapcore.Encoder @@ -96,6 +101,9 @@ func (fe FilterEncoder) AddArray(key string, marshaler zapcore.ArrayMarshaler) e // AddObject is part of the zapcore.ObjectEncoder interface. func (fe FilterEncoder) AddObject(key string, marshaler zapcore.ObjectMarshaler) error { + if fe.filtered(key, marshaler) { + return nil + } fe.keyPrefix += key + ">" return fe.wrapped.AddObject(key, logObjectMarshalerWrapper{ enc: fe, -- cgit v1.2.3