Skip to content

自定义Parser和Sender

Sun Jianbo edited this page May 23, 2017 · 1 revision

logkit不仅包含开箱即用的功能,同时支持用户根据自己的业务场景进行定制化开发。

对于自定义parser

用户只需要实现LogParser接口,以及实现一个该类型的构造函数:

type LogParser interface {
	Name() string
	Parse(lines []string) (datas []sender.Data, err error) // parse lines into structured datas
}


func NewMyParser(c conf.MapConf) (parser.LogParser, error) {
    // TODO implement your constructor
}

对于自定义sender

用户只需要实验Sender接口

type Sender interface {
	Name() string
	Send([]Data) error  // send data, error if failed
	Close() error
}

func NewMySender(c conf.MapConf) (sender.Sender, error) {
    // TODO implement your constructor
}

在启动的时候注册好自己的parser,并将其注入到Manager中

pregistry := parser.NewParserRegistry()
// 注册自定义parser
pregistry.RegisterParser("myparser", samples.NewMyParser)

sregistry := sender.NewSenderRegistry()
// 注册自定义sender
sregistry.RegisterSender("mysender", samples.NewMySender)

m, err := mgr.NewCustomManager(conf.ManagerConfig, pregistry, sregistry)

具体的示例可以参见代码中的samples 模块,该模块实现了一个简单的parser。剩下的用法就跟之前的logkit完全一样了。在你的parser中配置你的自定义parser即可。 注意,在runner配置里面,不仅仅可以使用你自己自定义的parser,sender,同样可以使用logkit自带的parser和sender。

"parser":{
    "name":"my_simple_parser",
    "type":"myparser",
    "max_len":"20"
},
"senders":[{
    "name":"mysender",
    "sender_type":"mysender",
    "fault_tolerant":"true",
    "ft_save_log_path":"./samples/ft",
    "ft_sync_every":"2000",
    "ft_write_limit":"10",
    "file_send_path":"./export_meta_test_csv_file.txt"
}]
Clone this wiki locally