Browse code

pkg/jsonlog: avoid JSONLog allocation in loop

Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)

unclejack authored on 2014/09/19 00:04:18
Showing 1 changed files
... ...
@@ -25,11 +25,16 @@ func (jl *JSONLog) Format(format string) (string, error) {
25 25
 	return fmt.Sprintf("[%s] %s", jl.Created.Format(format), jl.Log), nil
26 26
 }
27 27
 
28
+func (jl *JSONLog) Reset() {
29
+	jl.Log = ""
30
+	jl.Stream = ""
31
+	jl.Created = time.Time{}
32
+}
33
+
28 34
 func WriteLog(src io.Reader, dst io.Writer, format string) error {
29 35
 	dec := json.NewDecoder(src)
36
+	l := &JSONLog{}
30 37
 	for {
31
-		l := &JSONLog{}
32
-
33 38
 		if err := dec.Decode(l); err == io.EOF {
34 39
 			return nil
35 40
 		} else if err != nil {
... ...
@@ -43,5 +48,6 @@ func WriteLog(src io.Reader, dst io.Writer, format string) error {
43 43
 		if _, err := io.WriteString(dst, line); err != nil {
44 44
 			return err
45 45
 		}
46
+		l.Reset()
46 47
 	}
47 48
 }