@@ -144,36 +144,21 @@ func RunStats(ctx context.Context, dockerCLI command.Cli, options *StatsOptions)
144144 }
145145
146146 eh := newEventHandler ()
147+ addEvents := []events.Action {events .ActionStart }
147148 if options .All {
148- eh .setHandler (events .ActionCreate , func (ctx context.Context , e events.Message ) {
149- if s := NewStats (e .Actor .ID ); cStats .add (s ) {
150- waitFirst .Add (1 )
151- log .G (ctx ).WithFields (log.Fields {
152- "event" : e .Action ,
153- "container" : e .Actor .ID ,
154- }).Debug ("collecting stats for container" )
155- go collect (ctx , s , apiClient , ! options .NoStream , waitFirst )
156- }
157- })
149+ addEvents = append (addEvents , events .ActionCreate )
158150 }
159-
160- eh .setHandler (events .ActionStart , func (ctx context.Context , e events.Message ) {
151+ eh .setHandler (addEvents , func (ctx context.Context , e events.Message ) {
161152 if s := NewStats (e .Actor .ID ); cStats .add (s ) {
162153 waitFirst .Add (1 )
163- log .G (ctx ).WithFields (log.Fields {
164- "event" : e .Action ,
165- "container" : e .Actor .ID ,
166- }).Debug ("collecting stats for container" )
154+ log .G (ctx ).Debug ("collecting stats for container" )
167155 go collect (ctx , s , apiClient , ! options .NoStream , waitFirst )
168156 }
169157 })
170158
171159 if ! options .All {
172- eh .setHandler (events .ActionDie , func (ctx context.Context , e events.Message ) {
173- log .G (ctx ).WithFields (log.Fields {
174- "event" : e .Action ,
175- "container" : e .Actor .ID ,
176- }).Debug ("stop collecting stats for container" )
160+ eh .setHandler ([]events.Action {events .ActionDie }, func (ctx context.Context , e events.Message ) {
161+ log .G (ctx ).Debug ("stop collecting stats for container" )
177162 cStats .remove (e .Actor .ID )
178163 })
179164 }
@@ -377,8 +362,10 @@ type eventHandler struct {
377362 handlers map [events.Action ]func (context.Context , events.Message )
378363}
379364
380- func (eh * eventHandler ) setHandler (action events.Action , handler func (context.Context , events.Message )) {
381- eh .handlers [action ] = handler
365+ func (eh * eventHandler ) setHandler (actions []events.Action , handler func (context.Context , events.Message )) {
366+ for _ , action := range actions {
367+ eh .handlers [action ] = handler
368+ }
382369}
383370
384371// watch ranges over the passed in event chan and processes the events based on the
@@ -394,8 +381,11 @@ func (eh *eventHandler) watch(ctx context.Context, c <-chan events.Message) {
394381 log .G (ctx ).WithField ("event" , e ).Errorf ("event handler: received %s event with empty ID" , e .Action )
395382 continue
396383 }
384+ logger := log .G (ctx ).WithFields (log.Fields {
385+ "event" : e .Action ,
386+ "container" : e .Actor .ID ,
387+ })
397388
398- log .G (ctx ).WithField ("event" , e ).Debugf ("event handler: received %s event for: %s" , e .Action , e .Actor .ID )
399- go h (ctx , e )
389+ go h (log .WithLogger (ctx , logger ), e )
400390 }
401391}
0 commit comments