日志服务 日志分发

某用户将日志采集到日志服务(Cloud Log Service,CLS),日志通过双竖线||分隔,有日志的时间、日志级别、任务 ID、进程名称、主机 IP 等。现在用户想将日志结构化,并按照 ERROR、WARNING、INFO 三个级别,把日志分发到三个不同的目标日志主题中,便于后续的分析。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

一、场景分析

·日志结构化:按照双竖线||分隔符,对日志进行结构化。

·日志分发:按照 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"}

注意:必须要提前配置好目标日志主题和目标名称。

赞 (0)
上一篇 4天前
下一篇 4天前