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)
} }
Go第三方库之tail的更多相关文章
- Egret 集成第三方库 记录
引入第三方库pureMVC 这次我们要使用到一个mvc开发框架-pureMVC,熟悉as3的朋友一定也对这个框架不陌生吧.不熟悉的也没关系,这个框架不是这次的主角.我们从 这里 下载pureMVC的T ...
- iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView
iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView 时间:2016-01-19 19:13:43 阅读:630 评论:0 收藏:0 ...
- Qt-导入第三方库
Qt提供了显式和隐式导入第三方库方法,本文只介绍显示导入方法. 第三方提供的库文件包括ControlCAN.h,ControlCAN.dll和ControlCAN.lib.将ControlCAN.h和 ...
- ios常用的第三方库
ios开发中有可能用到的第三方库进行记录一下: 注:资料信息来源于网络 自己整理 https://developer.apple.com/reference(苹果官方文档) https://gith ...
- Facebook Paper使用的第三方库
Facebook Paper使用的第三方库 第三方库名 简介 链接 ACE code editor https://github.com/ajaxorg/ace Appirater 用户评分组件 ht ...
- iOS开发之第三方库的学习--hpple的使用
前言:因为在开发中很可能会遇到html解析,如果后台提供的数据只有html数据,或者开发的app需要从web前端的html里获取数据,就需要html解析工具了. 关于HTML解析库,可以阅读:收集几个 ...
- iOS真机调试引入第三方库(如友盟等)编译时候,出现错误提示
用Xcode 7 beta 3在真机(iOS 8.3)上运行一下工程,结果发现工程编译不过.看了下问题,报的是以下错误: MARK:解决方法:在building Setting 中设置bitCode ...
- Pycharm如何添加第三方库和插件
首先打开Pycharm,点击左上角 >>File >>Setting . 打开之后点击 >>PRoject :untitled >>Projec ...
- import第三方库的头文件找不到的错误
问题描述:使用cocoapods导入了第三方库,import该第三方库的某个头文件,然后编译报错找不到这个头文件内所import的头文件. 产生原因:我们需要配置头文件的搜索路径,告诉系统头文件的路径 ...
随机推荐
- java字符串操作扩充:灵活截取字符串
java字符串操作扩充:灵活截取字符串 public class StringUtil { static int varlen1; static int varlen2; static String ...
- 跨站脚本(XSS)
1.1 XSS定义 XSS,即为(Cross Site Scripting),中文名为跨站脚本,是发生在目标用户的浏览器层面上的,当渲染DOM树的过程发生了不在预期内执行的JS代码时,就发生了XSS攻 ...
- Accept Xcode/iOS License to run git
在没有安装Xcode的情况下, 使用了 webstorm 的git,提示 安装xcode,安装完成后,并没有打开xcode,而是再次使用git,发现 提示 输入以下命令行: sudo xcodebui ...
- PP: Neural tensor factorization
relational data. Neural collaborative filtering and recurrent recommender systems have been successf ...
- Appium+python自动化-元素定位uiautomatorviewer的使用
前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是androi ...
- Linux C++ 直接选择排序,冒泡排序,快速排序
选择排序的思想是:每次从待排序中选择最小(大)的元素插入已经排好的序列中. /*直接选择排序*/ #include <iostream> using namespace std; void ...
- google protocol 入门 demo
ubunbu系统下google protobuf的安装 说明: 使用protobuf时需要安装两部分: 第一部分为*.proto文件的编译器,它负责把定义的*.proto文件生成对应的c++类的.h和 ...
- jQuery---jQuery对象与DOM对象的区别
jQuery对象与DOM对象的区别 1. DOM对象:使用JavaScript中的方法获取页面中的元素返回的对象就是dom对象.2. jQuery对象:jquery对象就是使用jquery的方法获取页 ...
- opencv 实现人脸检测(harr特征)
我这里用的是已经训练好的haar级联分类器. 眼睛检测 haarcascade_eye_tree_eyeglasses.xml 人脸检测 haarcascade_frontalface_alt2.xm ...
- 【模板】裸SPFA
SPFA可以处理带负边权的图,可以判负环,然而SPFA容易被卡,即使加了各种优化. 队列优化的贝尔福德曼:裸SPFA //SPFA #include<bits/stdc++.h> usin ...