实时输出日志

实时读取日志文件,并输出到命令行或其他操作; 本次演示将日志最后一行实时打印;

安装tail

  1. go get github.com/hpcloud/tail

基本使用

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/hpcloud/tail"
  5. "log"
  6. "os"
  7. "time"
  8. )
  9. func main() {
  10. tailf()
  11. }
  12. func tailf() {
  13. //定义log文件路径
  14. logPaht := "./xxx.log"
  15. //创建log文件
  16. create, _ := os.Create(logPaht) //create 如果文件存在会清空
  17. defer create.Close()
  18. //定义初始化tail配置
  19. config := tail.Config{
  20. ReOpen: true,
  21. Poll: true,
  22. Follow: true,
  23. Location: &tail.SeekInfo{Offset: 0,Whence: 2},//从文件末尾读取
  24. }
  25. file, err := tail.TailFile(logPaht, config)
  26. if err != nil {
  27. log.Println("初始化tail失败!")
  28. return
  29. }
  30. var (
  31. msg *tail.Line
  32. ok bool
  33. )
  34. for {
  35. msg, ok = <-file.Lines
  36. if !ok {
  37. log.Println("读取日志失败!")
  38. time.Sleep(time.Second)
  39. continue
  40. }
  41. fmt.Println("msg:", msg.Text)
  42. }
  43. }