func tailFile(filename string, config tail.Config, done chan bool) { defer func() { done <- true }() t, err := tail.TailFile(filename, config) if err != nil { fmt.Println(err) return } for line := range t.Lines { fmt.Println(line.Text) } err = t.Wait() if err != nil { fmt.Println(err) } }
ShortDescription: ` 'ipfs log tail' is a utility command used to read log output as it is written. `, }, Run: func(req cmds.Request, res cmds.Response) { path := fmt.Sprintf("%s/logs/events.log", req.Context().ConfigRoot) outChan := make(chan interface{}) go func() { defer close(outChan) t, err := tail.TailFile(path, tail.Config{ Location: &tail.SeekInfo{0, 2}, Follow: true, MustExist: true, Logger: tail.DiscardingLogger, }) if err != nil { fmt.Println(err.Error()) return } defer t.Stop() done := req.Context().Context.Done() for line := range t.Lines { // return when context closes select { case <-done: return