code: func getTailer(conf Config, file string, stateFile string) (*tail.Tail, error) {
  	// tail a real file
  	var loc *tail.SeekInfo // 0 value means start at beginning
  	var reOpen, follow bool = true, true
  	switch conf.Options.ReadFrom {
  	case "start", "beginning":
  		// 0 value for tail.SeekInfo means start at beginning
  	case "end":
  		loc = &tail.SeekInfo{
  			Offset: 0,
  			Whence: 2,
  		}
  	case "last":
  		loc = getStartLocation(stateFile, file)
  	default:
  		errMsg := fmt.Sprintf("unknown option to --read_from: %s",
  			conf.Options.ReadFrom)
  		return nil, errors.New(errMsg)
  	}
  	if conf.Options.Stop {
  		reOpen = false
  		follow = false
  	}
  	tailConf := tail.Config{
  		Location:  loc,
  		ReOpen:    reOpen, // keep reading on rotation, aka tail -F
  		MustExist: true,   // fail if log file doesn't exist
  		Follow:    follow, // don't stop at EOF, aka tail -f
  		Logger:    tail.DiscardingLogger,
  		Poll:      conf.Options.Poll, // use poll instead of inotify
  	}
  	logrus.WithFields(logrus.Fields{
  		"tailConf":  tailConf,
  		"conf":      conf,
  		"statefile": stateFile,
  		"location":  loc,
  	}).Debug("about to call tail.TailFile")
  	return tail.TailFile(file, tailConf)
  }
docs: // getTailer configures the *tail.Tail correctly to begin actually tailing the
  // specified file.