-
Notifications
You must be signed in to change notification settings - Fork 255
自定义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"
}]
快速开始 | Pandora | Readers | Parsers | Senders | Download | 七牛智能日志管理平台 | logkit-pro专业版