From 2620523219a24ad483ee54883cf1f60d86e6ef0e Mon Sep 17 00:00:00 2001 From: Daichi HIRATA Date: Fri, 15 Dec 2017 14:45:33 +0900 Subject: [PATCH] Fix encoder of messagepack to keep in pool --- logger.go | 5 +---- message.go | 7 ++++++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/logger.go b/logger.go index d99fa26..260e55b 100644 --- a/logger.go +++ b/logger.go @@ -6,8 +6,6 @@ import ( "strings" "sync" "time" - - "gopkg.in/vmihailenco/msgpack.v2" ) var ( @@ -65,8 +63,7 @@ func (logger *Logger) PostWithTime(tag string, t time.Time, obj interface{}) err } m := getMessage() - enc := msgpack.NewEncoder(m.buf) - if err := enc.Encode(record); err != nil { + if err := m.enc.Encode(record); err != nil { return err } logger.buf.Add(m) diff --git a/message.go b/message.go index cf5f2b5..c627eff 100644 --- a/message.go +++ b/message.go @@ -3,10 +3,13 @@ package fluent import ( "bytes" "sync" + + "gopkg.in/vmihailenco/msgpack.v2" ) type Message struct { buf *bytes.Buffer + enc *msgpack.Encoder } var messagePool = sync.Pool{ @@ -26,7 +29,9 @@ func putMessage(message *Message) { } func newMessage() *Message { + buf := bytes.NewBuffer([]byte{}) return &Message{ - buf: bytes.NewBuffer([]byte{}), + buf: buf, + enc: msgpack.NewEncoder(buf), } }