func globFiles(globs []string, excludedFiles []*regexp.Regexp, excludePatterns []*regexp.Regexp, logger *syslog.Logger, wr *WorkerRegistry, logMissingFiles bool, severity syslog.Priority, facility syslog.Priority, poll bool) { log.Debugf("Evaluating file globs") for _, glob := range globs { files, err := filepath.Glob(utils.ResolvePath(glob)) if err != nil { log.Errorf("Failed to glob %s: %s", glob, err) } else if files == nil && logMissingFiles { log.Errorf("Cannot forward %s, it may not exist", glob) } for _, file := range files { switch { case wr.Exists(file): log.Debugf("Skipping %s because it is already running", file) case matchExps(file, excludedFiles): log.Debugf("Skipping %s because it is excluded by regular expression", file) default: log.Infof("Forwarding %s", file) go tailOne(file, excludePatterns, logger, wr, severity, facility, poll) } } } }
func (s *Server) globFiles(firstPass bool) { log.Debugf("Evaluating file globs") for _, glob := range s.config.Files { tag := glob.Tag files, err := filepath.Glob(utils.ResolvePath(glob.Path)) if err != nil { log.Errorf("Failed to glob %s: %s", glob.Path, err) } else if files == nil && firstPass { log.Errorf("Cannot forward %s, it may not exist", glob.Path) } for _, file := range files { switch { case s.registry.Exists(file): log.Debugf("Skipping %s because it is already running", file) case matchExps(file, s.config.ExcludeFiles): log.Debugf("Skipping %s because it is excluded by regular expression", file) default: log.Infof("Forwarding file: %s", file) whence := io.SeekStart // don't read the entire file on startup if firstPass { whence = io.SeekEnd } s.registry.Add(file) go s.tailOne(file, tag, whence) } } } }