golang第三方包tail监听日志文件
package main
import (
"fmt"
"github.com/hpcloud/tail"
"path"
"runtime"
"time"
)
func main() {
logAbsolutePath := `./../logdir/log.txt`
_, filename, _, _ := runtime.Caller(0)
fmt.Println(filename)
datapath := path.Join(path.Dir(filename), logAbsolutePath)
fmt.Println("datapath:",datapath)
tailFile, err := tail.TailFile(datapath, tail.Config{
// 文件夹被移除或被或被打包,需要重新打开
ReOpen: true,
//实时跟踪
Follow: true,
// 如果出现移除,保存上次读取位置,避免重新读取
Location: &tail.SeekInfo{Offset: 0, Whence: 2},
//支持文件不存在
MustExist: false,
Poll: true,
})
if err != nil {
fmt.Println("tail filen err:", err)
}
for true {
msg, ok := <- tailFile.Lines
if !ok {
fmt.Println("tail file close open, filename:%s\n",tailFile.Filename)
time.Sleep(100* time.Millisecond)
continue
}
// 只打印text
fmt.Println("msg:", msg.Text)
}
}