通过 LogCollector 采集文本日志时,可以通过 LogCollector 插件对采集到的日志数据指定字段进行采集后处理,例如某个字段的正则模式解析等。本文档介绍使用 LogCollector 插件处理日志的操作步骤。
对于日志结构复杂、格式不固定等复杂场景,配置文本日志的 LogCollector 采集规则时,可以开启插件功能,填写用于处理日志的插件配置,日志服务处理采集到的日志数据时,会根据插件配置依次执行对应的处理逻辑,对采集到的日志数据指定字段进行采集后处理,例如某个字段的正则模式解析等。
在这种场景下创建采集配置时,可以通过各种采集模式对原始日志的外层结构进行初次拆分和解析,再通过 LogCollector 插件指定字段进行再次拆分和解析。支持添加一个或多个插件,LogCollector 将按照填写插件配置的顺序依次执行。
创建采集配置并填写采集规则时,在插件配置区域选择启动,并填写插件配置。
插件配置格式为 JSON,请填写一个完整的 JSON 对象。其中 key 固定为 processors,value 基础为 JSON Object 数组,数组的每个 Object 代表一个 LogCollector 插件配置。LogCollector 支持的插件列表及其配置方式请参考插件列表。
例如某应用的原始日志如下:
Click Here&&36&&bold&&text1&&250&&100&&#center#&&sun1.opacity = (sun1.opacity / 100) * 90;
通过单行全文模式采集以上单行日志时,日志服务会对日志全文进行字段封装,最终保存在服务端的日志数据为:
__content__:Click Here&&36&&bold&&text1&&250&&100&&#center#&&sun1.opacity = (sun1.opacity / 100) * 90; __path__:net/log/net_log_event.log __source__:192.0.0.1
其中 __content__
字段可以通过分隔符进行二次拆分,即可以开启插件处理,并指定通过 delimiter 插件使用分隔符模式提取 __content__
字段中的内容。
插件配置如下:
{ "processors":[ { "delimiter": { "field": "__content__", "delimiter": "&&", "keys": [ "data", "size", "style", "name", "hOffset", "vOffset", "alignment", "onMouseUp" ], "trim_values": { "mode": "all", "chars": "#" }, "allow_overwrite_keys": true, "allow_empty_values": true } } ] }
__content__
字段的处理结果如下:
"data": "Click Here" "size": "36" "style": "bold" "name": "text1" "hOffset": "250" "vOffset": "100" "alignment": "center" "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"