// Scan starts a scanGlob for each provided path/glob func (p *ProspectorLog) scan() { for path, info := range p.getFiles() { logp.Debug("prospector", "Check file for harvesting: %s", path) // Create new state for comparison newState := file.NewState(info, path) // Load last state lastState := p.Prospector.states.FindPrevious(newState) // Ignores all files which fall under ignore_older if p.isIgnoreOlder(newState) { logp.Debug("prospector", "Ignore file because ignore_older reached: %s", newState.Source) // If last state is empty, it means state was removed or never created -> can be ignored if !lastState.IsEmpty() && !lastState.Finished { logp.Err("File is falling under ignore_older before harvesting is finished. Adjust your close_* settings: %s", newState.Source) } continue } // Decides if previous state exists if lastState.IsEmpty() { logp.Debug("prospector", "Start harvester for new file: %s", newState.Source) err := p.Prospector.startHarvester(newState, 0) if err != nil { logp.Err("Harvester could not be started on new file: %s, Err: %s", newState.Source, err) } } else { p.harvestExistingFile(newState, lastState) } } }
// Scan starts a scanGlob for each provided path/glob func (p *ProspectorLog) scan() { newLastScan := time.Now() // TODO: Track harvesters to prevent any file from being harvested twice. Finished state could be delayed? // Now let's do one quick scan to pick up new files for f, fileinfo := range p.getFiles() { logp.Debug("prospector", "Check file for harvesting: %s", f) // Create new state for comparison newState := file.NewState(fileinfo, f) // Load last state index, lastState := p.Prospector.states.FindPrevious(newState) // Decides if previous state exists if index == -1 { p.harvestNewFile(newState) } else { p.harvestExistingFile(newState, lastState) } } p.lastScan = newLastScan }
// Scan starts a scanGlob for each provided path/glob func (p *ProspectorLog) scan() { for path, info := range p.getFiles() { logp.Debug("prospector", "Check file for harvesting: %s", path) // Create new state for comparison newState := file.NewState(info, path) // Load last state lastState := p.Prospector.states.FindPrevious(newState) // Ignores all files which fall under ignore_older if p.isIgnoreOlder(newState) { err := p.handleIgnoreOlder(lastState, newState) if err != nil { logp.Err("Updating ignore_older state error: %s", err) } continue } // Decides if previous state exists if lastState.IsEmpty() { logp.Debug("prospector", "Start harvester for new file: %s", newState.Source) err := p.Prospector.startHarvester(newState, 0) if err != nil { logp.Err("Harvester could not be started on new file: %s, Err: %s", newState.Source, err) } } else { p.harvestExistingFile(newState, lastState) } } }
// Scan starts a scanGlob for each provided path/glob func (p *ProspectorLog) scan() { for path, info := range p.getFiles() { logp.Debug("prospector", "Check file for harvesting: %s", path) // Create new state for comparison newState := file.NewState(info, path) // Load last state lastState := p.Prospector.states.FindPrevious(newState) // Ignores all files which fall under ignore_older if p.isIgnoreOlder(newState) { logp.Debug("prospector", "Ignore file because ignore_older reached: %s", newState.Source) if lastState.IsEmpty() && lastState.Finished == false { logp.Err("File is falling under ignore_older before harvesting is finished. Adjust your close_* settings: %s", newState.Source) } continue } // Decides if previous state exists if lastState.IsEmpty() { logp.Debug("prospector", "Start harvester for new file: %s", newState.Source) p.Prospector.startHarvester(newState, 0) } else { p.harvestExistingFile(newState, lastState) } } }