mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
933a87236f
Before this change, the log decoder function provided by the log driver to logfile would not be able to re-use buffers, causing undeeded allocations and memory bloat for dockerd. This change introduces an interface that allows the log driver to manage it's memory usge more effectively. This only affects json-file and local log drivers. `json-file` still is not great just because of how the json decoder in the stdlib works. `local` is significantly improved. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
27 lines
713 B
Go
27 lines
713 B
Go
package jsonlog // import "github.com/docker/docker/daemon/logger/jsonfilelog/jsonlog"
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// JSONLog is a log message, typically a single entry from a given log stream.
|
|
type JSONLog struct {
|
|
// Log is the log message
|
|
Log string `json:"log,omitempty"`
|
|
// Stream is the log source
|
|
Stream string `json:"stream,omitempty"`
|
|
// Created is the created timestamp of log
|
|
Created time.Time `json:"time"`
|
|
// Attrs is the list of extra attributes provided by the user
|
|
Attrs map[string]string `json:"attrs,omitempty"`
|
|
}
|
|
|
|
// Reset all fields to their zero value.
|
|
func (jl *JSONLog) Reset() {
|
|
jl.Log = ""
|
|
jl.Stream = ""
|
|
jl.Created = time.Time{}
|
|
for k := range jl.Attrs {
|
|
delete(jl.Attrs, k)
|
|
}
|
|
}
|