Skip to content

vela-ssoc/vela-tail

Repository files navigation

tail

文件读取模块 按行读取配置文件 并进行回调处理

rock.tail

    local t = rock.tail{
        name = "tail",
        limit = 100 ,       -- 100条/s
        thread = 2 ,        -- 处理线程  2/thread
        to     = lua.writer -- 数据传输
    }
    t.start()

    local t = rock.tail("tail")
    --todo
    t.start()

内部方法

文件处理

fx.on(tx) 是当触发文件读取的EOF是触发事件 tx 内部变量函数
fx.delim 分隔符号 默认:'\n'
fx.node(codec) 默认添加节点信息 同样只要jsonraw 两种状态模式
fx.add优先级大于tail模块

目录处理

dx.poll(10 , 3600 ) 是采用周期轮询方式监控文件夹监听 如果会自动匹配增删改 dead可选 监控时长
dx.inotify(3600 ) 是采用inotify监控文件加 判断write或者delete事件 dead 可选 监控时长

    local dx = t.dir("/var/log" , "*.log")
    dx.poll(100) -- 100s/次
    dx.on(function(fx)
        print(fx.path) 
        fx.wait(true)
        fx.buffer(10000)
        fx.pipe()
        fx.node("json")
        fx.on(function(tx) tx.poll(100) end)
        fx.run()
    end)
    dx.run()

内部函数

用来处理file文件处理的时候发生EOF是 手动处理逻辑 Tx变量

example

local t = rock.tail("error").limit(10).to(k).start()

local function on(tx)
  tx.after(3)
  tx.inotify()
end

local function show(raw)
  std.out.println(raw)  
end

local dx = t.dir("logs" , "xss*.log")
dx.poll(1)
dx.on(_(fx)
  fx.bkt("tail_seed_record_dir")
  fx.node("json")
  fx.pipe(show)
  fx.on(on)
  fx.run()
end)
dx.run()

local fx = t.file("logs\\xss.log")
fx.wait(true)
fx.bkt("tail_seed_record_6")
fx.node("json")
fx.pipe(show)
fx.on(on)
fx.after(5)
fx.poll(1)
fx.run()