func (instance *Instance) readFromTail(t *tail.Tail, pub *zmqpubsub.Publisher, name string, stopCh chan bool, filename string, tracker storage.Tracker) { var err error FORLOOP: for { select { case line, ok := <-t.Lines: if !ok { err = t.Wait() break FORLOOP } currentOffset, err := t.Tell() if err != nil { log.Error(err.Error()) } tracker.Update(instance.getShortDockerId(), filename, currentOffset) instance.publishLine(pub, name, line) case <-stopCh: err = t.Stop() break FORLOOP } } if err != nil { log.Warn(err) instance.SendTimelineEvent("WARN -- Error tailing file (%s); %s", name, err) } log.Infof("Completed tailing %v log for %v", name, instance.Identifier()) }