1. 实时读取文件内容

在做日志分析的时候,需要实时的获取日志里面的内容找到了tail感觉好不错分享给大家

  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. "github.com/hpcloud/tail"
  6. )
  7. func main() {
  8. fileName := "./my.log"
  9. config := tail.Config{
  10. ReOpen: true, // 重新打开
  11. Follow: true, // 是否跟随
  12. Location: &tail.SeekInfo{Offset: 0, Whence: 2}, // 从文件的哪个地方开始读
  13. MustExist: false, // 文件不存在不报错
  14. Poll: true,
  15. }
  16. tails, err := tail.TailFile(fileName, config)
  17. if err != nil {
  18. fmt.Println("tail file failed, err:", err)
  19. return
  20. }
  21. var (
  22. line *tail.Line
  23. ok bool
  24. )
  25. for {
  26. line, ok = <-tails.Lines
  27. if !ok {
  28. fmt.Printf("tail file close reopen, filename:%s\n", tails.Filename)
  29. time.Sleep(time.Second)
  30. continue
  31. }
  32. fmt.Println("line:", line.Text)
  33. }
  34. }

在同级目录下面定义一个my.log文件,在文件里面写入文字敲下回车,并且保存之后,程序会自动的获取并且打印,可以根据业务需要就行修改