From 1b60f27f53ec9d11423914ebb437c7678795897e Mon Sep 17 00:00:00 2001 From: David Stark Date: Mon, 9 Dec 2019 22:21:47 +0000 Subject: [PATCH] monitoring create/removal of log files --- .../1-file-watch/create-delete-monitor.go | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 playground/1-file-watch/create-delete-monitor.go diff --git a/playground/1-file-watch/create-delete-monitor.go b/playground/1-file-watch/create-delete-monitor.go new file mode 100644 index 0000000..8e1756f --- /dev/null +++ b/playground/1-file-watch/create-delete-monitor.go @@ -0,0 +1,54 @@ +package main + +import ( + "fmt" + "log" + "regexp" + "time" + + "github.com/radovskyb/watcher" +) + +func main() { + w := watcher.New() + + w.FilterOps(watcher.Create, watcher.Remove) + + r := regexp.MustCompile("^abc$") + w.AddFilterHook(watcher.RegexFilterHook(r, false)) + + // dispatch creation/removal events here + go func() { + for { + select { + case event := <-w.Event: + // fmt.Println(event) + fmt.Printf("%s (%s)\n", event.Path, event.Op) + case err := <-w.Error: + log.Fatalln(err) + case <-w.Closed: + return + } + } + }() + + if err := w.Add("."); err != nil { + log.Fatalln(err) + } + + for path, f := range w.WatchedFiles() { + fmt.Printf("%s: %s\n", path, f.Name()) + } + + fmt.Println("=== startup complete ===") + + // go func() { + // w.Wait() + // w.TriggerEvent(watcher.Create, nil) + // }() + + if err := w.Start(time.Millisecond * 100); err != nil { + log.Fatalln(err) + } + +}