[Go] golang实时监控日志文件的包tail

在linux中有一个tail命令,tail -f可以实时的监控文件新增加的内容,如果用代码实现这个逻辑,可以下载使用这个包
go get github.com/hpcloud/tail/...

 

测试代码:

package main

import (
    "fmt"

    "github.com/hpcloud/tail"
)

func main() {
    t, _ := tail.TailFile("log.txt", tail.Config{Follow: true})
    for line := range t.Lines {
        fmt.Println(line.Text)
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Golang的标准库中的`os`和`filepath`来实现Windows文件监控。具体步骤如下: 1. 使用`os.Stat()`函数获取待监控文件的信息,文件名、路径、大小、修改时间等。 2. 使用`os.Open()`函数打开待监控文件。 3. 使用`os.File`对象的`Stat()`函数获取文件的当前信息,括大小和修改时间。 4. 使用`os.File`对象的`Seek()`函数将文件指针移到文件末尾。 5. 使用`os.File`对象的`Read()`函数读取文件末尾的数据,如果读到数据,则表示文件有更新。 6. 如果文件有更新,则可以执行相应的操作,如打印文件更新信息等。 下面是一个简单的示例代码: ``` package main import ( "fmt" "os" "path/filepath" "time" ) func main() { filename := "test.txt" path, err := filepath.Abs(filename) if err != nil { fmt.Println(err) return } fi, err := os.Stat(path) if err != nil { fmt.Println(err) return } for { time.Sleep(time.Second) // 每秒检查一次文件更新 currFi, err := os.Stat(path) if err != nil { fmt.Println(err) continue } if currFi.Size() != fi.Size() || currFi.ModTime() != fi.ModTime() { fi = currFi fmt.Printf("File %s has been updated!\n", filename) // 可以在这里执行相应的操作 } } } ``` 在上面的示例中,程序会每秒检查一次文件是否有更新,如果文件有更新,则打印相应的信息。在实际应用中,可以根据具体需求执行相应的操作,如发送邮件、上传文件等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值