mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Merge pull request #8109 from unclejack/avoid_jsonlog_alloc
daemon/logs: avoid JSONLog struct alloc in loop
This commit is contained in:
		
						commit
						ac75835931
					
				
					 2 changed files with 12 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -88,9 +88,8 @@ func (daemon *Daemon) ContainerLogs(job *engine.Job) engine.Status {
 | 
			
		|||
				cLog = tmp
 | 
			
		||||
			}
 | 
			
		||||
			dec := json.NewDecoder(cLog)
 | 
			
		||||
			l := &jsonlog.JSONLog{}
 | 
			
		||||
			for {
 | 
			
		||||
				l := &jsonlog.JSONLog{}
 | 
			
		||||
 | 
			
		||||
				if err := dec.Decode(l); err == io.EOF {
 | 
			
		||||
					break
 | 
			
		||||
				} else if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -102,11 +101,12 @@ func (daemon *Daemon) ContainerLogs(job *engine.Job) engine.Status {
 | 
			
		|||
					logLine = fmt.Sprintf("%s %s", l.Created.Format(format), logLine)
 | 
			
		||||
				}
 | 
			
		||||
				if l.Stream == "stdout" && stdout {
 | 
			
		||||
					fmt.Fprintf(job.Stdout, "%s", logLine)
 | 
			
		||||
					io.WriteString(job.Stdout, logLine)
 | 
			
		||||
				}
 | 
			
		||||
				if l.Stream == "stderr" && stderr {
 | 
			
		||||
					fmt.Fprintf(job.Stderr, "%s", logLine)
 | 
			
		||||
					io.WriteString(job.Stderr, logLine)
 | 
			
		||||
				}
 | 
			
		||||
				l.Reset()
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,11 +25,16 @@ func (jl *JSONLog) Format(format string) (string, error) {
 | 
			
		|||
	return fmt.Sprintf("[%s] %s", jl.Created.Format(format), jl.Log), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (jl *JSONLog) Reset() {
 | 
			
		||||
	jl.Log = ""
 | 
			
		||||
	jl.Stream = ""
 | 
			
		||||
	jl.Created = time.Time{}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func WriteLog(src io.Reader, dst io.Writer, format string) error {
 | 
			
		||||
	dec := json.NewDecoder(src)
 | 
			
		||||
	l := &JSONLog{}
 | 
			
		||||
	for {
 | 
			
		||||
		l := &JSONLog{}
 | 
			
		||||
 | 
			
		||||
		if err := dec.Decode(l); err == io.EOF {
 | 
			
		||||
			return nil
 | 
			
		||||
		} else if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -43,5 +48,6 @@ func WriteLog(src io.Reader, dst io.Writer, format string) error {
 | 
			
		|||
		if _, err := io.WriteString(dst, line); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		l.Reset()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue