You need to enable JavaScript to run this app.
文档中心
日志服务

日志服务

复制全文
下载 pdf
全局操作函数
事件处理函数
复制全文
下载 pdf
事件处理函数
本文档介绍事件处理函数的语法与格式、相关的场景示例等。​
e_output 函数​
输出到指定别名的目标主题中。其中,日志主题别名即创建加工任务时指定的目标名称。​
函数语法/格式​
​
e_output(topic="日志主题别名")​
​
参数说明如下:​
​
参数​
参数类型​
是否必选​
默认值​
取值范围​
说明​
topic​
String​
是​
/​
/​
日志主题别名。​
​
函数示例​
  • 场景:根据日志中字段 is_output 的值判断是否要输出该日志到别名为 target-1 的日志主题中。​
  • 加工规则:​
  • ​
    c_if(v("is_output"), e_output("target-1"))​
    ​
  • 日志样例:​
  • ​
    [​
    {​
    "is_output":1,​
    "content":"hello world"​
    },​
    {​
    "is_output":0,​
    "content":"test content"​
    }​
    ]​
    ​
  • 加工结果:​
  • ​
    [​
    {​
    "is_output":1,​
    "content":"hello world"​
    }​
    ]​
    ​
Tip​
第一条日志输出到别名为 target-1 的日志主题中,第二条日志不输出。​
e_auto_output 函数​
将日志动态分发到不同的日志主题中。例如日志字段 service 的值为 tos、kafka,您可以指定 e_auto_output 函数根据 service 的值将日志动态分发到名为 tos、kafka 的日志主题中。如果日志主题 tos、kafka 不存在,系统会先创建日志主题。​
函数语法/格式​
​
e_auto_output(project='日志项目名称',topic='日志主题名称',tags='日志主题标签',index='索引配置')​
​
参数说明如下:​
说明​
  • 如果已存在相同名称的日志项目、日志主题,系统不会重复创建。​
  • 通过字段值动态创建日志项目、日志主题时,字段值必须符合资源命名要求,否则使用 e_auto_output 函数时将报错。详细说明,请参考资源命名限制。​
​
参数​
参数类型​
是否必选​
默认值​
取值范围​
说明​
project​
String​
是​
/​
/​
设置日志项目名称。​
topic​
String​
是​
/​
/​
设置日志主题名称。​
tags​
String​
否​
/​
/​
设置日志主题标签,格式为 key:value,多个标签之间使用半角逗号(,)分隔。例如 tags='a:b,c:d' 表示为该日志主题添加两组标签 a:b 和 c:d。​
index​
String​
否​
full_text​
full_text​
设置日志主题的索引。​
  • full_text:开启全文索引。​
  • 空字符串:关闭全文索引。​
​
函数示例​
函数示例 1:​
  • 场景:从 service 字段中提取值,然后根据该值将日志动态分发到对应的日志主题中,并且为该日志主题开启全文索引。如果日志项目和日志主题不存在,系统会根据您在函数中指定的值进行创建。​
  • 加工规则:​
  • ​
    e_auto_output(project='myproject',topic=v('service'))​
    ​
  • 日志样例:​
  • ​
    // 日志 1​
    {​
    "service": "tos",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    // 日志 2​
    {​
    "service": "kafka",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    ​
  • 加工结果:​
  • 将日志 1 分发到 myproject 日志项目下的 tos 日志主题中。​
  • ​
    {​
    "service": "tos",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    ​
  • 将日志 2 分发到 myproject 日志项目下的 kafka 日志主题中。​
  • ​
    {​
    "service": "kafka",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    ​
函数示例 2:​
  • 场景:从 project-name 字段和 topic-name 字段中提取值,然后根据该值将日志分发到对应的日志主题中,并且为该日志主题添加标签 key1:value1 和 key2:value2,以及开启全文索引。如果日志项目和日志主题不存在,系统会根据您在函数中指定的值进行创建。​
  • 加工规则:​
  • ​
    e_auto_output(v('project-name'),v('topic-name'),tags='key1:value1,key2:value2')​
    ​
  • 日志样例:​
  • ​
    // 日志 1​
    {​
    "project-name": "myproject01",​
    "topic-name": "accesslog01",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    // 日志 2​
    {​
    "project-name": "myproject02",​
    "topic-name": "accesslog02",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    ​
  • 加工结果:​
  • 将日志 1 分发到 myproject01 日志项目下的 accesslog01 日志主题中,并且为该日志主题添加标签 key1:value1 、 key2:value2,以及开启全文索引。​
  • ​
    {​
    "project-name": "myproject01",​
    "topic-name": "accesslog01",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    ​
  • 将日志 2 分发到 myproject02 日志项目下的 accesslog02 日志主题中,并且为该日志主题添加标签 key1:value1 、 key2:value2,以及开启全文索引。​
  • ​
    {​
    "project-name": "myproject02",​
    "topic-name": "accesslog02",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    ​
函数示例 3:​
  • 场景:从 project-name 字段和 topic-name 字段中提供日志项目名和日志主题名,然后根据该值将日志分发到对应的日志主题中,且关闭该日志主题的全文索引。如果日志项目和日志主题不存在,系统会根据您在函数中指定的值进行创建。​
  • 加工规则:​
  • ​
    e_auto_output(v('project-name'),v('topic-name'),index='')​
    ​
  • 日志样例:​
  • ​
    // 日志 1​
    {​
    "project-name": "myproject01",​
    "topic-name": "accesslog01",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    // 日志 2​
    {​
    "project-name": "myproject02",​
    "topic-name": "accesslog02",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    ​
  • 加工结果:​
  • 将日志 1 分发到 myproject01 日志项目下的 accesslog01 日志主题中,并且关闭该日志主题的全文索引。​
  • ​
    {​
    "project-name": "myproject01",​
    "topic-name": "accesslog01",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    ​
  • 将日志 2 分发到 myproject02 日志项目下的 accesslog02 日志主题中,并且关闭该日志主题的全文索引。​
  • ​
    {​
    "project-name": "myproject02",​
    "topic-name": "accesslog02",​
    "week": "Monday,Tuesday,Wednesday"​
    }​
    ​
e_split 函数​
使用分隔符对特定字段进行拆分,拆分结果分裂为多条日志。​
函数语法/格式​
​
e_split(field, sep=",", quote='"', lstrip=True, jmes=None, output=None)​
​
分裂规则:​
  • 规则 1:如果配置了 jmes 参数,则将日志字段的值转化为 JSON 列表,再使用 jmes 提取值作为下一步的值。此时 sep 和 quote 参数的指定无效。如果没有配置 jmes 参数,按规则 2 进行分裂。​
  • 规则 2:如果上一步的值是一个列表或 JSON 列表格式的字符串,则按照此列表分裂并结束处理,此时 sep 和 quote 参数的指定无效。如果不是 JSON 列表或 JSON 列表字符串,按规则 3 进行分裂。​
  • 规则 3:使用 sep、quote 和 lstrip 将上一步的值进行 CSV 解析,根据解析后的多个值进行分裂并结束处理。​
参数说明如下:​
​
参数​
参数类型​
是否必选​
默认值​
取值范围​
说明​
field​
String​
是​
/​
/​
待分裂的字段名。​
sep​
String​
否​
,​
任意单字符​
分隔符。​
quote​
String​
否​
"​
任意单字符​
用于引用多个值的配对类字符的引用符。​
lstrip​
Boolean​
否​
True​
/​
是否将值左边的空格去掉,默认为 True,仅字符串分裂时生效。​
jmes​
String​
否​
None​
/​
将字段值转化为 JSON 对象,使用 JMES 提取特定值,再进行分裂操作。​
output​
String​
否​
None​
/​
设置一个新的字段名,默认覆盖旧的相同字段。​
​
函数示例​
  • 场景:根据字段 city 的值分裂为多条日志。​
  • 加工规则:​
  • ​
    e_split("city")​
    ​
  • 日志样例:​
  • ​
    {​
    "content":"hello world",​
    "city":"shanghai,hangzhou,chengdu"​
    }​
    ​
  • 加工结果:​
  • ​
    [​
    {​
    "content":"hello world",​
    "city":"shanghai"​
    },​
    {​
    "content":"hello world",​
    "city":"hangzhou"​
    },​
    {​
    "content":"hello world",​
    "city":"chengdu"​
    }​
    ]​
    ​
e_drop 函数​
丢弃符合条件的日志。​
函数语法/格式​
​
e_drop(condition=条件)​
​
参数说明如下:​
​
参数​
参数类型​
是否必选​
默认值​
取值范围​
说明​
condition​
Boolean​
否​
True​
/​
是否丢弃。​
​
函数示例​
  • 场景:根据日志字段 city 的值判断是否丢弃该日志。​
  • 加工规则:​
  • ​
    c_if(op_eq(v("city"), "shanghai"), e_drop())​
    ​
  • 日志样例:​
  • ​
    [​
    {​
    "content":"hello world",​
    "city":"shanghai"​
    },​
    {​
    "content":"hello world",​
    "city":"hangzhou"​
    }​
    ]​
    ​
  • 加工结果:​
  • ​
    {​
    "content":"hello world",​
    "city":"hangzhou"​
    }​
    ​
e_keep 函数​
保留符合条件的日志,不符合条件则丢弃。​
函数语法/格式​
​
e_keep(condition=条件)​
​
参数说明如下:​
​
参数​
参数类型​
是否必选​
默认值​
取值范围​
说明​
condition​
Boolean​
否​
True​
/​
是否保留。​
​
函数示例​
  • 场景:根据日志字段 city 的值判断是否保留该日志。​
  • 加工规则:​
  • ​
    e_keep(op_eq(v("city"), "shanghai"))​
    ​
  • 日志样例:​
  • ​
    [​
    {​
    "content":"hello world",​
    "city":"shanghai"​
    },​
    {​
    "content":"hello world",​
    "city":"hangzhou"​
    }​
    ]​
    ​
  • 加工结果:​
  • ​
    {​
    "content":"hello world",​
    "city":"shanghai"​
    }​
    ​
​
最近更新时间:2026.09.21 18:48:14
这个页面对您有帮助吗?
有用
有用
无用
无用