tailf日志组件使用

当tail的文件中有信息变动时,就会tail到变动的地方。

例子:

func main() {
	//filename := "E:/golang/go_work/src/go_dev/day11/tail/my.log"
	filename := "C:\\Users\\TCY\\Desktop\\logs\\my.log"
	tails, err := tail.TailFile(filename, tail.Config{
		ReOpen:    true,	   // 文件被移除或被打包,需要重新打开,基础库会检测,如果文件有改变,会重新打开
		Follow:    true,       // 实时跟踪
		//Location:  &tail.SeekInfo{Offset: 0, Whence: 2}, // 如果程序出现异常,保存上次读取的位置,避免重新读取
		MustExist: false,	   //flase日志文件不存在也监控
		Poll:      true,      //不断的去查询
	})
	if err != nil {
		fmt.Println("tail file err:", err)
		return
	}
	var msg *tail.Line
	var ok bool
	for true {
		msg, ok = <-tails.Lines     //chan
		if !ok {
			// ok 是判断管道是否被关闭,如果关闭就是文件被重置了,需要重新读取新的管道
			fmt.Printf("tail file close reopen, filename:%s\n", tails.Filename)
			time.Sleep(100 * time.Millisecond)
			continue
		}
		fmt.Println("msg:", msg)
	}
}

1、当没有找到要tail的文件时:会等待出现

2018/07/20 21:23:18 Waiting for C:\Users\TCY\Desktop\logs\my.log to appear...

2、接下来在该文件中新建该文件,输出文件的信息

msg: &{# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2018-06-18 19:22:49.1946892 +0800 CST <nil>}
msg: &{# 222222222222222222222222222222222222222 2018-06-18 19:22:49.1946892 +0800 CST <nil>}
msg: &{# 333333333333333333333333333333333333333. 2018-06-18 19:22:49.2086992 +0800 CST <nil>}
msg: &{# ttttttttttttttttttttttttttttt 2018-06-18 19:22:49.2102004 +0800 CST <nil>}

猜你喜欢

转载自blog.csdn.net/qq_36183935/article/details/80922116
今日推荐