一、场景分析
·日志结构化:按照双竖线||分隔符,对日志进行结构化。
·日志分发:按照 ERROR、WARNING、INFO 三个级别,把日志分发到三个不同的目标日志主题。
注意:说明:
注意:在 新建数据加工任务 时,目标日志主题选择固定日志主题,并提前定义目标名称。该名称将用在 log_output("目标名称") 函数中。
二、原始日志
[ { "message": "2021-12-09 11:34:28.279||INFO||605c643e29e4||BIN–Python||192.168.1.1" }, { "message": "2021-12-09 11:35:28.279||WARNING||615c643e22e4||BIN–Java||192.168.1.1" }, { "message": "2021-12-09 11:36:28.279||ERROR||635c643e22e4||BIN–Go||192.168.1.1" }]
三、DSL 加工函数
//使用||作为分隔符(竖线需要转义),从message中提取time,loglevel,taskId,processName,ip字段.ext_sepstr("message","time,loglevel,taskId,ProcessName,ip",sep="\\|\\|")//丢弃messagefields_drop("message")//使用switch语句进行分发t_switch(//loglevel为"INFO",输出到info_logop_str_eq(v("loglevel"),"INFO"),log_output("info_log"), //loglevel为"WARNING",输出到warning_logop_str_eq(v("loglevel"),"WARNING"),log_output("warning_log"),//loglevel为"ERROR",输出到error_logop_str_eq(v("loglevel"),"ERROR"),log_output("error_log"))
四、加工结果
error_log 中:
{"processName":"BIN–Go","ip":"192.168.1.1","loglevel":"ERROR","taskId":"635c643e22e4","time":"2021-12-09 11:36:28.279"}
warning_log 中:
{"processName":"BIN–Java","ip":"192.168.1.1","loglevel":"WARNING","taskId":"615c643e22e4","time":"2021-12-09 11:35:28.279"}
info_log 中:
{"processName":"BIN–PYTHON","ip":"192.168.1.1","loglevel":"INFO","taskId":"605c643e29e4","time":"2021-12-09 11:34:28.279"}
注意:必须要提前配置好目标日志主题和目标名称。