Skip to main content
Version: 2.7.x

添加监控

package main

import (
"context"

"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gfsnotify"
)

func main() {
var (
path = "/home/john/temp"
ctx = context.Background()
logger = g.Log()
callback = func(event *gfsnotify.Event) {
if event.IsCreate() {
logger.Debug(ctx, "创建文件 : ", event.Path)
}
if event.IsWrite() {
logger.Debug(ctx, "写入文件 : ", event.Path)
}
if event.IsRemove() {
logger.Debug(ctx, "删除文件 : ", event.Path)
}
if event.IsRename() {
logger.Debug(ctx, "重命名文件 : ", event.Path)
}
if event.IsChmod() {
logger.Debug(ctx, "修改权限 : ", event.Path)
}
logger.Debug(ctx, event)
}
)
_, err := gfsnotify.Add(path, callback, gfsnotify.WatchOption{})
if err != nil {
logger.Fatal(ctx, err)
} else {
select {}
}
}

其中 /home/john 参数为一个目录,当我们在 /home/john 目录下创建/删除/修改文件时,可以看到 gfsnotify 监控到了文件的修改并输出了对应的事件信息。

递归监控

我们可以通过gfsnotify.WatchOption来设置监控的一些选项,例如是否递归监控。在默认情况下,Add方法会执行递归监控,也就是说当目录下的文件(包括子目录下的文件)发生变化时,也会收到文件监控信息回调。

如果在监控目录下创建新的目录,并且新的目录中继续创建新的目录或文件,以此类推,新创建的目录或文件也将自动被监控。