@@ -22,6 +22,7 @@ import (
2222 "io"
2323 "os"
2424 "path/filepath"
25+ "time"
2526)
2627
2728type FileTailer interface {
@@ -92,6 +93,17 @@ func (t *fileTailer) Close() {
9293}
9394
9495func RunFileTailer (globs []glob.Glob , readall bool , failOnMissingFile bool , log logrus.FieldLogger ) (FileTailer , error ) {
96+ return runFileTailer (initWatcher , globs , readall , failOnMissingFile , log )
97+ }
98+
99+ func RunPollingFileTailer (globs []glob.Glob , readall bool , failOnMissingFile bool , pollInterval time.Duration , log logrus.FieldLogger ) (FileTailer , error ) {
100+ initFunc := func () (fswatcher , Error ) {
101+ return initPollingWatcher (pollInterval )
102+ }
103+ return runFileTailer (initFunc , globs , readall , failOnMissingFile , log )
104+ }
105+
106+ func runFileTailer (initFunc func () (fswatcher , Error ), globs []glob.Glob , readall bool , failOnMissingFile bool , log logrus.FieldLogger ) (FileTailer , error ) {
95107
96108 var (
97109 t * fileTailer
@@ -106,7 +118,7 @@ func RunFileTailer(globs []glob.Glob, readall bool, failOnMissingFile bool, log
106118 done : make (chan struct {}),
107119 }
108120
109- t .osSpecific , Err = initWatcher ()
121+ t .osSpecific , Err = initFunc ()
110122 if Err != nil {
111123 return nil , Err
112124 }
@@ -127,10 +139,10 @@ func RunFileTailer(globs []glob.Glob, readall bool, failOnMissingFile bool, log
127139 eventProducerLoop := t .osSpecific .runFseventProducerLoop ()
128140 defer eventProducerLoop .Close ()
129141
130- for _ , dirPath := range t .watchedDirs {
131- dirLogger := log .WithField ("directory" , dirPath )
142+ for _ , dir := range t .watchedDirs {
143+ dirLogger := log .WithField ("directory" , dir . Path () )
132144 dirLogger .Debugf ("initializing directory" )
133- Err = t .syncFilesInDir (dirPath , readall , dirLogger )
145+ Err = t .syncFilesInDir (dir , readall , dirLogger )
134146 if Err != nil {
135147 select {
136148 case <- t .done :
0 commit comments