字符串替换

您在使用Logtail采集日志时,可以使用processor_string_replace插件,实现文本日志的全文替换、正则提取替换或去转义符。本文介绍processor_string_replace插件的参数说明和配置示例。

重要
  • 表单配置方式:采集文本日志和容器标准输出时可用。

  • JSON配置方式:采集文本日志时不可用。

功能入口

当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail采集配置时,添加插件配置。具体操作,请参见处理插件概述

插件配置说明

重要

Logtail 1.6.0及以上版本支持processor_string_replace插件。

表单配置方式

配置处理器类型字符串替换,相关参数说明如下表所示。

参数

说明

原始字段

原始字段名。

匹配方式

指定匹配方式。可选值:

  • 字符串匹配:通过字符串替换目标内容。

  • 正则匹配:通过正则表达式替换目标内容。

  • 去除转义符:去除转义符。

匹配内容

输入匹配的内容。

  • 设置匹配方式字符串匹配时,输入与待替换内容匹配的字符串。

    当多个字符串都匹配时,全部替换。

  • 设置匹配方式正则表达式匹配时,输入与待替换内容匹配的正则表达式。

    当多个字符串都匹配时,全部替换。您也可以用正则分组方式匹配指定的分组。

  • 设置匹配方式去除转义符时,无需配置该参数。

替换内容

用于替换的字符串。

  • 设置匹配方式字符串匹配时,输入用于替换原内容的字符串。

  • 设置匹配方式正则表达式匹配时,输入用于替换原内容的字符串,支持根据正则分组进行替换。

  • 设置匹配方式去除转义符时,无需配置该参数。

结果字段

为替换后的内容指定新字段。

JSON配置方式

配置typeprocessor_string_replacedetail说明如下表所示。

参数

类型

是否必选

说明

SourceKey

String

原始字段名。

Method

String

指定匹配方式。可选值:

  • const:使用字符串替换。

  • regex:使用正则表达式替换。

  • unquote:去除转义符。

Match

String

输入匹配内容。

  • 设置Methodconst时,输入与待替换内容匹配的字符串。

    当多个字符串都匹配时,全部替换。

  • 设置Methodregex时,输入与待替换内容匹配的正则表达式。

    当多个字符串都匹配时,全部替换。您也可以用正则分组方式匹配指定的分组。

  • 设置Methodunquote时,无需配置此参数。

ReplaceString

String

用于替换的字符串,默认值为""。

  • 设置Methodconst时,输入用于替换原内容的字符串。

  • 设置Methodregex时,输入用于替换原内容的字符串,支持根据正则分组进行替换。

  • 设置Methodunquote时,无需配置此参数。

DestKey

String

为替换后的内容指定新字段,默认不新增字段。

配置示例

通过字符串匹配方式进行替换

通过字符串匹配方式进行替换,将content字段值中的Error:替换为空字符串。

表单配置方式

  • 原始日志如下:

    "content": "2023-05-20 10:01:23 Error: Unable to connect to database."
  • Logtail插件处理配置:image..png

  • 处理结果:

    "content": "2023-05-20 10:01:23 Unable to connect to database."

JSON配置方式

  • 原始日志:

    "content": "2023-05-20 10:01:23 Error: Unable to connect to database."
  • Logtail插件处理配置:

    {
      "processors":[
        {
          "type":"processor_string_replace",
          "detail": {
            "SourceKey": "content",
            "Method": "const",
            "Match": "Error: ", 
            "ReplaceString": ""
          }
        }
      ]
    }
  • 处理结果:

    "content": "2023-05-20 10:01:23 Unable to connect to database.",

通过正则表达式方式进行替换

通过正则表达式方式进行替换,将content字段值中与正则表达式\\u\w+\[\d{1,3};*\d{1,3}m|N/A匹配的字符串替换为空字符串。

表单配置方式

  • 原始日志:

    "content": "2022-09-16 09:03:31.013 \u001b[32mINFO \u001b[0;39m \u001b[34m[TID: N/A]\u001b[0;39m [\u001b[35mThread-30\u001b[0;39m] \u001b[36mc.s.govern.polygonsync.job.BlockTask\u001b[0;39m : 区块采集------结束------\r"
  • Logtail插件处理配置:image..png

  • 处理结果:

    "content": "2022-09-16 09:03:31.013 INFO [TID: ] [Thread-30] c.s.govern.polygonsync.job.BlockTask : 区块采集------结束------\r",

JSON配置方式

  • 原始日志:

    "content": "2022-09-16 09:03:31.013 \u001b[32mINFO \u001b[0;39m \u001b[34m[TID: N/A]\u001b[0;39m [\u001b[35mThread-30\u001b[0;39m] \u001b[36mc.s.govern.polygonsync.job.BlockTask\u001b[0;39m : 区块采集------结束------\r"
  • Logtail插件处理配置:

    {
      "processors":[
        {
          "type":"processor_string_replace",
          "detail": {
            "SourceKey": "content",
            "Method": "regex",
            "Match": "\\\\u\\w+\\[\\d{1,3};*\\d{1,3}m|N/A", 
            "ReplaceString": ""
          }
        }
      ]
    }
  • 处理结果:

    "content": "2022-09-16 09:03:31.013 INFO [TID: ] [Thread-30] c.s.govern.polygonsync.job.BlockTask : 区块采集------结束------\r",

通过正则分组方式进行替换

通过正则分组方式进行替换,将content字段值中的16替换为*/24,并输出到新字段new_ip中。

重要

正则分组替换时,替换内容中不能存在{},只能使用$1$2 等形式。

表单配置方式

  • 原始日志:

    "content": "10.10.239.16"
  • Logtail插件处理配置:image..png

  • 处理结果:

    "content": "10.10.239.16",
    "new_ip": "10.10.239.*/24",

JSON配置方式

  • 原始日志:

    "content": "10.10.239.16"
  • Logtail插件处理配置:

    {
      "processors":[
        {
          "type":"processor_string_replace",
          "detail": {
            "SourceKey": "content",
            "Method": "regex",
            "Match": "(\\d.*\\.)\\d+", 
            "ReplaceString": "$1*/24",
            "DestKey": "new_ip"
          }
        }
      ]
    }
  • 处理结果:

    "content": "10.10.239.16",
    "new_ip": "10.10.239.*/24",

删除转义字符

表单配置方式

  • 原始日志:

    "content": "{\\x22UNAME\\x22:\\x22\\x22,\\x22GID\\x22:\\x22\\x22,\\x22PAID\\x22:\\x22\\x22,\\x22UUID\\x22:\\x22\\x22,\\x22STARTTIME\\x22:\\x22\\x22,\\x22ENDTIME\\x22:\\x22\\x22,\\x22UID\\x22:\\x222154212790\\x22,\\x22page_num\\x22:1,\\x22page_size\\x22:10}"
  • Logtail插件处理配置:image..png

  • 处理结果:

    "content": "{\"UNAME\":\"\",\"GID\":\"\",\"PAID\":\"\",\"UUID\":\"\",\"STARTTIME\":\"\",\"ENDTIME\":\"\",\"UID\":\"2154212790\",\"page_num\":1,\"page_size\":10}",

JSON配置方式

  • 原始日志:

    "content": "{\\x22UNAME\\x22:\\x22\\x22,\\x22GID\\x22:\\x22\\x22,\\x22PAID\\x22:\\x22\\x22,\\x22UUID\\x22:\\x22\\x22,\\x22STARTTIME\\x22:\\x22\\x22,\\x22ENDTIME\\x22:\\x22\\x22,\\x22UID\\x22:\\x222154212790\\x22,\\x22page_num\\x22:1,\\x22page_size\\x22:10}"
  • Logtail插件处理配置:

    {
      "processors":[
        {
          "type":"processor_string_replace",
          "detail": {
            "SourceKey": "content",
            "Method": "unquote"
          }
        }
      ]
    }
  • 处理结果:

    "content": "{\"UNAME\":\"\",\"GID\":\"\",\"PAID\":\"\",\"UUID\":\"\",\"STARTTIME\":\"\",\"ENDTIME\":\"\",\"UID\":\"2154212790\",\"page_num\":1,\"page_size\":10}",