Go第三方库之tail
时间:2020-01-09
本文章向大家介绍Go第三方库之tail,主要包括Go第三方库之tail使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Tail Demo
// tail.TailFile()函数开启goroutine去读取文件,通过channel格式的t.lines传递内容。 t, err := tail.TailFile("/var/log/nginx.log", tail.Config{Follow: true}) if err != nil { fmt.Println(err) //如果文件不存在,会阻塞并打印Waiting for my.log to appear...,直到文件被创建 } for line := range t.Lines { fmt.Println(line.Text)
源码详解
type Config struct { // File-specifc Location *SeekInfo // 指定开始读取的位置 ReOpen bool //true则文件被删掉阻塞等待新建该文件,false则文件被删掉时程序结束 MustExist bool //true则没有找到文件就报错并结束,false则没有找到文件就阻塞保持住 Poll bool // 使用Linux的Poll函数,poll的作用是把当前的文件指针挂到等待队列 Pipe bool // Is a named pipe (mkfifo) RateLimiter *ratelimiter.LeakyBucket // Generic IO Follow bool //true则一直阻塞并监听指定文件,false则一次读完就结束程序 MaxLineSize int // If non-zero, split longer lines into multiple lines // Logger, when nil, is set to tail.DefaultLogger // To disable logging: set field to tail.DiscardingLogger Logger logger func TailFile // func TailFile(filename string, config Config) (*Tail, error) func (*Tail) Cleanup // func (tail *Tail) Cleanup() func (*Tail) Stop ¶ Uses // func (tail *Tail) Stop() error func (*Tail) StopAtEOF // func (tail *Tail) StopAtEOF() error func (*Tail) Tell // func (tail *Tail) Tell() (offset int64, err error)
Demo
package main import ( "fmt" "github.com/hpcloud/tail" ) func main() { var ( line *tail.Line ok bool ) // log文件名 fileName := "./log.log" // 设置config config := tail.Config{ Location: &tail.SeekInfo{ Offset: 0, Whence: 0, }, Poll: true, ReOpen: true, MustExist: false, Follow: true, } // 创建tail句柄 tails, err := tail.TailFile(fileName, config) if err != nil { fmt.Println("error->", err) return } for { // 通过管道获取到每条行数据 line, ok = <-tails.Lines fmt.Println("走这里了" ) if !ok { fmt.Println("tail file close,fileName:", tails.Filename) continue } fmt.Println("line:", line) } }
原文地址:https://www.cnblogs.com/binHome/p/12171741.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android6.0开发中屏幕旋转原理与流程分析
- Android中WebView的基本配置与填坑记录大全
- Android开发实现ListView异步加载数据的方法详解
- Android开发实现AlertDialog中View的控件设置监听功能分析
- 详解Android 语音播报实现方案(无SDK)
- Android实现中轴旋转特效 Android制作别样的图片浏览器
- Android使用DrawerLayout实现双向侧滑菜单
- Android实现3D推拉门式滑动菜单源码解析
- Android编程处理窗口控件大小,形状,像素等UI元素工具类
- Android开发实现的Log统一管理类
- Android中可以作为Log开关的一些操作及安全性详解
- 实例详解Android Webview拦截ajax请求
- Android给布局、控件加阴影效果的示例代码
- XListView实现下拉刷新和上拉加载原理解析
- Android实现QQ侧滑(删除、置顶等)功能