Open
Description
Is your feature request related to a problem? Please describe.
I would want to override encoder, to mask some data out from logs, or encode it:
type MaskingEncoder struct {
zapcore.Encoder
}
func (m *MaskingEncoder) EncodeEntry(entry zapcore.Entry, fields []zapcore.Field) (*buffer.Buffer, error) {
filtered := make([]zapcore.Field, 0, len(fields))
for _, field := range fields {
key := strings.ToLower(field.Key)
if slices.ContainsFunc(skipFieldRegexps, func(r *regexp.Regexp) bool {
return r.Match([]byte(key))
}) {
continue
}
filtered = append(filtered, field)
}
return m.Encoder.EncodeEntry(entry, filtered)
}
And I want to wrap sinker to dump all the requests to a buffer to test logging.
Describe the solution you'd like
I would like to do it same way it is done for zapcore.Core
, via zap.WrapCore
:
l, err := zapConf.Build(zapcore.WrapEncoder())
Describe alternatives you've considered
Alternatives to wrap encoder:
- Wrap whole logger and filter out fields
- Register another encoder and fix all the configs to use it.
- Copy
zapcore.Config.Build
code and inject it in there
Alternatives to wrap sinker:
- Copy
zapcore.Config.Build
code and inject it in there
Is this a breaking change?
Nope
Metadata
Assignees
Labels
No labels
Activity