daemon/logger: Put Message back as soon as possible
The Message is not needed after it is marshalled, so no need to hold it for the entire function scope. Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
This commit is contained in:
parent
8fe2a68698
commit
98810847c4
2 changed files with 10 additions and 5 deletions
|
@ -118,16 +118,19 @@ func New(info logger.Info) (logger.Logger, error) {
|
|||
|
||||
// Log converts logger.Message to jsonlog.JSONLog and serializes it to file.
|
||||
func (l *JSONFileLogger) Log(msg *logger.Message) error {
|
||||
defer logger.PutMessage(msg)
|
||||
buf := buffersPool.Get().(*bytes.Buffer)
|
||||
buf.Reset()
|
||||
defer buffersPool.Put(buf)
|
||||
|
||||
if err := marshalMessage(msg, l.extra, buf); err != nil {
|
||||
timestamp := msg.Timestamp
|
||||
err := marshalMessage(msg, l.extra, buf)
|
||||
logger.PutMessage(msg)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return l.writer.WriteLogEntry(msg.Timestamp, buf.Bytes())
|
||||
return l.writer.WriteLogEntry(timestamp, buf.Bytes())
|
||||
}
|
||||
|
||||
func marshalMessage(msg *logger.Message, extra json.RawMessage, buf *bytes.Buffer) error {
|
||||
|
|
|
@ -147,15 +147,17 @@ func (d *driver) Name() string {
|
|||
}
|
||||
|
||||
func (d *driver) Log(msg *logger.Message) error {
|
||||
defer logger.PutMessage(msg)
|
||||
buf := buffersPool.Get().(*[]byte)
|
||||
defer buffersPool.Put(buf)
|
||||
|
||||
timestamp := msg.Timestamp
|
||||
err := marshal(msg, buf)
|
||||
logger.PutMessage(msg)
|
||||
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error marshalling logger.Message")
|
||||
}
|
||||
return d.logfile.WriteLogEntry(msg.Timestamp, *buf)
|
||||
return d.logfile.WriteLogEntry(timestamp, *buf)
|
||||
}
|
||||
|
||||
func (d *driver) Close() error {
|
||||
|
|
Loading…
Add table
Reference in a new issue