diff --git a/bridges/otelzap/core.go b/bridges/otelzap/core.go index 59914e125c3..0b0b79aa1f6 100644 --- a/bridges/otelzap/core.go +++ b/bridges/otelzap/core.go @@ -133,7 +133,6 @@ func (o *Core) clone() *Core { } } -// TODO // Sync flushes buffered logs (if any). func (o *Core) Sync() error { return nil @@ -172,7 +171,6 @@ func (o *Core) Write(ent zapcore.Entry, fields []zapcore.Field) error { } func convertField(fields []zapcore.Field) (context.Context, []log.KeyValue) { - // TODO: Use objectEncoder from a pool instead of newObjectEncoder. var ctx context.Context enc := newObjectEncoder(len(fields)) for _, field := range fields { diff --git a/bridges/otelzap/encoder.go b/bridges/otelzap/encoder.go index 8b962bd309c..c831b74389f 100644 --- a/bridges/otelzap/encoder.go +++ b/bridges/otelzap/encoder.go @@ -55,15 +55,15 @@ func (m *objectEncoder) calculate(o *namespace) { } func (m *objectEncoder) AddArray(key string, v zapcore.ArrayMarshaler) error { - // TODO: Use arrayEncoder from a pool. - arr := &arrayEncoder{} + arr := newArrayEncoder() err := v.MarshalLogArray(arr) m.cur.attrs = append(m.cur.attrs, log.Slice(key, arr.elems...)) return err } func (m *objectEncoder) AddObject(k string, v zapcore.ObjectMarshaler) error { - // TODO: Use objectEncoder from a pool. + // Similar to console_encoder which uses capacity of 2: + // https://github.com/uber-go/zap/blob/bd0cf0447951b77aa98dcfc1ac19e6f58d3ee64f/zapcore/console_encoder.go#L33. newobj := newObjectEncoder(2) err := v.MarshalLogObject(newobj) newobj.calculate(newobj.root) @@ -195,16 +195,24 @@ type arrayEncoder struct { elems []log.Value } +func newArrayEncoder() *arrayEncoder { + return &arrayEncoder{ + // Similar to console_encoder which uses capacity of 2: + // https://github.com/uber-go/zap/blob/bd0cf0447951b77aa98dcfc1ac19e6f58d3ee64f/zapcore/console_encoder.go#L33. + elems: make([]log.Value, 0, 2), + } +} + func (a *arrayEncoder) AppendArray(v zapcore.ArrayMarshaler) error { - // TODO: Use arrayEncoder from a pool. - arr := &arrayEncoder{} + arr := newArrayEncoder() err := v.MarshalLogArray(arr) a.elems = append(a.elems, log.SliceValue(arr.elems...)) return err } func (a *arrayEncoder) AppendObject(v zapcore.ObjectMarshaler) error { - // TODO: Use objectEncoder from a pool. + // Similar to console_encoder which uses capacity of 2: + // https://github.com/uber-go/zap/blob/bd0cf0447951b77aa98dcfc1ac19e6f58d3ee64f/zapcore/console_encoder.go#L33. m := newObjectEncoder(2) err := v.MarshalLogObject(m) m.calculate(m.root)