docs/main/reference/pipelines/interceptor/transformer/index.html

3786 lines
114 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="zh" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Loggie Documentation">
<link rel="prev" href="../schema/">
<link rel="next" href="../limit/">
<link rel="icon" href="../../../../assets/min-logo.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.1.18">
<title>transformer - </title>
<link rel="stylesheet" href="../../../../assets/stylesheets/main.26e3688c.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRobot+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Robot Mono"}</style>
<link rel="stylesheet" href="../../../../stylesheets/extra.css">
<script>__md_scope=new URL("../../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#transformer" class="md-skip">
跳转至
</a>
</div>
<div data-md-component="announce">
</div>
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
</div>
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="页眉">
<a href="../../../.." title=" " class="md-header__button md-logo" aria-label=" " data-md-component="logo">
<img src="../../../../assets/loggie.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
transformer
</span>
</div>
</div>
</div>
<div class="md-header__option">
<div class="md-select">
<button class="md-header__button md-icon" aria-label="选择当前语言">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"/></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a href="https://loggie-io.github.io/docs-en/" hreflang="en" class="md-select__link">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="搜索" placeholder="搜索" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="查找">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="分享" aria-label="分享" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08Z"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
正在初始化搜索引擎
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/loggie-io/loggie" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</div>
<div class="md-source__repository">
loggie-io/loggie
</div>
</a>
</div>
</nav>
<nav class="md-tabs" aria-label="标签" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../../../.." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../../../../getting-started/overview/" class="md-tabs__link">
快速上手
</a>
</li>
<li class="md-tabs__item">
<a href="../../../../user-guide/" class="md-tabs__link">
用户指南
</a>
</li>
<li class="md-tabs__item">
<a href="../../../" class="md-tabs__link md-tabs__link--active">
组件配置
</a>
</li>
<li class="md-tabs__item">
<a href="../../../../developer-guide/contributing/" class="md-tabs__link">
开发手册
</a>
</li>
<li class="md-tabs__item">
<a href="../../../../blog/" class="md-tabs__link">
Blog
</a>
</li>
</ul>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="导航栏" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../../.." title=" " class="md-nav__button md-logo" aria-label=" " data-md-component="logo">
<img src="../../../../assets/loggie.svg" alt="logo">
</a>
</label>
<div class="md-nav__source">
<a href="https://github.com/loggie-io/loggie" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</div>
<div class="md-source__repository">
loggie-io/loggie
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../.." class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
快速上手
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
快速上手
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../getting-started/overview/" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="../../../../getting-started/intro/core-concept/" class="md-nav__link">
核心概念
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3" >
<label class="md-nav__link" for="__nav_2_3" id="__nav_2_3_label" tabindex="0">
快速上手
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_3">
<span class="md-nav__icon md-icon"></span>
快速上手
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../getting-started/quick-start/quick-start/" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="../../../../getting-started/quick-start/kubernetes/" class="md-nav__link">
Kubernetes环境
</a>
</li>
<li class="md-nav__item">
<a href="../../../../getting-started/quick-start/node/" class="md-nav__link">
主机环境
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4" >
<label class="md-nav__link" for="__nav_2_4" id="__nav_2_4_label" tabindex="0">
部署
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_4">
<span class="md-nav__icon md-icon"></span>
部署
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../getting-started/install/kubernetes/" class="md-nav__link">
Kubernetes部署
</a>
</li>
<li class="md-nav__item">
<a href="../../../../getting-started/install/node/" class="md-nav__link">
主机部署
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5" >
<label class="md-nav__link" for="__nav_2_5" id="__nav_2_5_label" tabindex="0">
RoadMap
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_5">
<span class="md-nav__icon md-icon"></span>
RoadMap
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../getting-started/roadmap/roadmap-2023.md" class="md-nav__link">
2023
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
用户指南
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
用户指南
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../user-guide/" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
架构与特性
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<span class="md-nav__icon md-icon"></span>
架构与特性
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../user-guide/architecture/background/" class="md-nav__link">
诞生背景
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/architecture/core-arch/" class="md-nav__link">
设计架构
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/architecture/schema/" class="md-nav__link">
数据格式
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/architecture/advantages/" class="md-nav__link">
优势与特性
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/architecture/compare/" class="md-nav__link">
开源项目对比
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" >
<label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
Kubernetes
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3">
<span class="md-nav__icon md-icon"></span>
Kubernetes
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../user-guide/use-in-kubernetes/general-usage/" class="md-nav__link">
Kubernetes下的日志采集
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/use-in-kubernetes/collect-container-logs/" class="md-nav__link">
Loggie采集容器日志
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/use-in-kubernetes/collect-node-logs/" class="md-nav__link">
Loggie采集Node日志
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/use-in-kubernetes/sidecar/" class="md-nav__link">
Sidecar方式采集日志
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/use-in-kubernetes/kube-event-source/" class="md-nav__link">
采集Kubernetes Events
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4" >
<label class="md-nav__link" for="__nav_3_4" id="__nav_3_4_label" tabindex="0">
最佳实践
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4">
<span class="md-nav__icon md-icon"></span>
最佳实践
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../user-guide/best-practice/log-collect-rotate/" class="md-nav__link">
日志rotate和日志采集
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/best-practice/log-enrich/" class="md-nav__link">
日志格式与元信息字段
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/best-practice/log-process/" class="md-nav__link">
日志切分处理
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/best-practice/aggregator/" class="md-nav__link">
使用Loggie中转机
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/best-practice/concurrency/" class="md-nav__link">
自适应sink流量控制
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
<label class="md-nav__link" for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
监控报警
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5">
<span class="md-nav__icon md-icon"></span>
监控报警
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../user-guide/monitor/loggie-monitor/" class="md-nav__link">
Loggie的监控与报警
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/monitor/service-log-alarm/" class="md-nav__link">
日志报警
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
<label class="md-nav__link" for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
企业实战
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6">
<span class="md-nav__icon md-icon"></span>
企业实战
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../user-guide/enterprise-practice/architecture-and-evolution/" class="md-nav__link">
日志系统架构与演进
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/enterprise-practice/sls/" class="md-nav__link">
使用阿里云可观测统一存储SLS
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7" >
<label class="md-nav__link" for="__nav_3_7" id="__nav_3_7_label" tabindex="0">
运维排障
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7">
<span class="md-nav__icon md-icon"></span>
运维排障
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../user-guide/troubleshot/log-collection/" class="md-nav__link">
日志采集快速排障指南
</a>
</li>
<li class="md-nav__item">
<a href="../../../../user-guide/troubleshot/problems/" class="md-nav__link">
问题案例
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
组件配置
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
组件配置
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="../../../global/args/" class="md-nav__link">
启动参数
</a>
</li>
<li class="md-nav__item">
<a href="../../../global/subcmd/" class="md-nav__link">
子命令
</a>
</li>
<li class="md-nav__item">
<a href="../../../global/var/" class="md-nav__link">
字段变量
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_5" >
<label class="md-nav__link" for="__nav_4_5" id="__nav_4_5_label" tabindex="0">
系统配置
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_5">
<span class="md-nav__icon md-icon"></span>
系统配置
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../global/monitor/" class="md-nav__link">
monitor
</a>
</li>
<li class="md-nav__item">
<a href="../../../global/discovery/" class="md-nav__link">
discovery
</a>
</li>
<li class="md-nav__item">
<a href="../../../global/reload/" class="md-nav__link">
reload
</a>
</li>
<li class="md-nav__item">
<a href="../../../global/defaults/" class="md-nav__link">
defaults
</a>
</li>
<li class="md-nav__item">
<a href="../../../global/http/" class="md-nav__link">
http
</a>
</li>
<li class="md-nav__item">
<a href="../../../global/db/" class="md-nav__link">
db
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_6" >
<label class="md-nav__link" for="__nav_4_6" id="__nav_4_6_label" tabindex="0">
Kubernetes CRD
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_6">
<span class="md-nav__icon md-icon"></span>
Kubernetes CRD
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../discovery/kubernetes/logconfig/" class="md-nav__link">
LogConfig
</a>
</li>
<li class="md-nav__item">
<a href="../../../discovery/kubernetes/clusterlogconfig/" class="md-nav__link">
ClusterLogConfig
</a>
</li>
<li class="md-nav__item">
<a href="../../../discovery/kubernetes/sink/" class="md-nav__link">
Sink
</a>
</li>
<li class="md-nav__item">
<a href="../../../discovery/kubernetes/interceptors/" class="md-nav__link">
Interceptor
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_7" >
<label class="md-nav__link" for="__nav_4_7" id="__nav_4_7_label" tabindex="0">
Source
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_7">
<span class="md-nav__icon md-icon"></span>
Source
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../source/overview/" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="../../source/file/" class="md-nav__link">
file
</a>
</li>
<li class="md-nav__item">
<a href="../../source/kafka/" class="md-nav__link">
kafka
</a>
</li>
<li class="md-nav__item">
<a href="../../source/franzkafka/" class="md-nav__link">
kafka(franz)
</a>
</li>
<li class="md-nav__item">
<a href="../../source/elasticsearch/" class="md-nav__link">
elasticsearch
</a>
</li>
<li class="md-nav__item">
<a href="../../source/kube-event/" class="md-nav__link">
kubeEvent
</a>
</li>
<li class="md-nav__item">
<a href="../../source/grpc/" class="md-nav__link">
grpc
</a>
</li>
<li class="md-nav__item">
<a href="../../source/prometheus-exporter/" class="md-nav__link">
prometheusExporter
</a>
</li>
<li class="md-nav__item">
<a href="../../source/unix/" class="md-nav__link">
unix
</a>
</li>
<li class="md-nav__item">
<a href="../../source/dev/" class="md-nav__link">
dev
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_8" >
<label class="md-nav__link" for="__nav_4_8" id="__nav_4_8_label" tabindex="0">
Sink
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_8">
<span class="md-nav__icon md-icon"></span>
Sink
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../sink/overview/" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/elasticsearch/" class="md-nav__link">
elasticsearch
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/kafka/" class="md-nav__link">
kafka
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/franzkafka/" class="md-nav__link">
kafka(franz)
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/loki/" class="md-nav__link">
loki
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/pulsar/" class="md-nav__link">
pulsar
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/rocketmq/" class="md-nav__link">
rocketmq
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/grpc/" class="md-nav__link">
grpc
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/file/" class="md-nav__link">
file
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/dev/" class="md-nav__link">
dev
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/sls/" class="md-nav__link">
sls
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/webhook/" class="md-nav__link">
alertwebhook
</a>
</li>
<li class="md-nav__item">
<a href="../../sink/zinc/" class="md-nav__link">
zinc
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9" checked>
<label class="md-nav__link" for="__nav_4_9" id="__nav_4_9_label" tabindex="0">
Interceptor
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_9_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4_9">
<span class="md-nav__icon md-icon"></span>
Interceptor
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../overview/" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="../schema/" class="md-nav__link">
schema
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
transformer
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
transformer
</a>
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
使用场景
</a>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
使用方式
</a>
</li>
<li class="md-nav__item">
<a href="#action" class="md-nav__link">
action
</a>
<nav class="md-nav" aria-label="action">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
公共字段
</a>
<nav class="md-nav" aria-label="公共字段">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#ignoreerror" class="md-nav__link">
ignoreError
</a>
</li>
<li class="md-nav__item">
<a href="#dropiferror" class="md-nav__link">
dropIfError
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#addkey-value" class="md-nav__link">
add(key, value)
</a>
</li>
<li class="md-nav__item">
<a href="#copyfrom-to" class="md-nav__link">
copy(from, to)
</a>
</li>
<li class="md-nav__item">
<a href="#movefrom-to" class="md-nav__link">
move(from, to)
</a>
</li>
<li class="md-nav__item">
<a href="#setkey-value" class="md-nav__link">
set(key, value)
</a>
</li>
<li class="md-nav__item">
<a href="#delkey1-key2" class="md-nav__link">
del(key1, key2...)
</a>
</li>
<li class="md-nav__item">
<a href="#underrootkey" class="md-nav__link">
underRoot(key)
</a>
</li>
<li class="md-nav__item">
<a href="#fmtkey" class="md-nav__link">
fmt(key)
</a>
</li>
<li class="md-nav__item">
<a href="#timestampkey" class="md-nav__link">
timestamp(key)
</a>
</li>
<li class="md-nav__item">
<a href="#regexkey" class="md-nav__link">
regex(key)
</a>
</li>
<li class="md-nav__item">
<a href="#grokkey" class="md-nav__link">
grok(key)
</a>
</li>
<li class="md-nav__item">
<a href="#jsondecodekey" class="md-nav__link">
jsonDecode(key)
</a>
</li>
<li class="md-nav__item">
<a href="#jsonencodekey" class="md-nav__link">
jsonEncode(key)
</a>
</li>
<li class="md-nav__item">
<a href="#splitkey" class="md-nav__link">
split(key)
</a>
</li>
<li class="md-nav__item">
<a href="#strconvkey-type" class="md-nav__link">
strconv(key, type)
</a>
</li>
<li class="md-nav__item">
<a href="#tostrkey-type" class="md-nav__link">
toStr(key, type)
</a>
</li>
<li class="md-nav__item">
<a href="#print" class="md-nav__link">
print()
</a>
</li>
<li class="md-nav__item">
<a href="#return" class="md-nav__link">
return()
</a>
</li>
<li class="md-nav__item">
<a href="#dropevent" class="md-nav__link">
dropEvent()
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#condition" class="md-nav__link">
condition
</a>
<nav class="md-nav" aria-label="condition">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
操作符
</a>
</li>
<li class="md-nav__item">
<a href="#equalkey-target" class="md-nav__link">
equal(key, target)
</a>
</li>
<li class="md-nav__item">
<a href="#containkey-target" class="md-nav__link">
contain(key, target)
</a>
</li>
<li class="md-nav__item">
<a href="#existkey" class="md-nav__link">
exist(key)
</a>
</li>
<li class="md-nav__item">
<a href="#greaterkey-value" class="md-nav__link">
greater(key, value)
</a>
</li>
<li class="md-nav__item">
<a href="#lesskey-value" class="md-nav__link">
less(key, value)
</a>
</li>
<li class="md-nav__item">
<a href="#hasprefixkey-prefix" class="md-nav__link">
hasPrefix(key, prefix)
</a>
</li>
<li class="md-nav__item">
<a href="#matchkey-regex" class="md-nav__link">
match(key, regex)
</a>
</li>
<li class="md-nav__item">
<a href="#oneofkey-value1-value2" class="md-nav__link">
oneOf(key, value1, value2...)
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../limit/" class="md-nav__link">
rateLimit
</a>
</li>
<li class="md-nav__item">
<a href="../addhostmeta/" class="md-nav__link">
addHostMeta
</a>
</li>
<li class="md-nav__item">
<a href="../addk8smeta/" class="md-nav__link">
addK8sMeta
</a>
</li>
<li class="md-nav__item">
<a href="../logalert/" class="md-nav__link">
logAlert
</a>
</li>
<li class="md-nav__item">
<a href="../metrics/" class="md-nav__link">
metrics
</a>
</li>
<li class="md-nav__item">
<a href="../retry/" class="md-nav__link">
retry
</a>
</li>
<li class="md-nav__item">
<a href="../maxbytes/" class="md-nav__link">
maxbytes
</a>
</li>
<li class="md-nav__item">
<a href="../normalize/" class="md-nav__link">
normalize
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_10" >
<label class="md-nav__link" for="__nav_4_10" id="__nav_4_10_label" tabindex="0">
Queue
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_10">
<span class="md-nav__icon md-icon"></span>
Queue
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../queue/channel/" class="md-nav__link">
channel
</a>
</li>
<li class="md-nav__item">
<a href="../../queue/memory/" class="md-nav__link">
memory
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_11" >
<label class="md-nav__link" for="__nav_4_11" id="__nav_4_11_label" tabindex="0">
Monitor
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_11">
<span class="md-nav__icon md-icon"></span>
Monitor
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../monitor/overview/" class="md-nav__link">
Overview
</a>
</li>
<li class="md-nav__item">
<a href="../../../monitor/filesource/" class="md-nav__link">
filesource
</a>
</li>
<li class="md-nav__item">
<a href="../../../monitor/filewatcher/" class="md-nav__link">
filewatcher
</a>
</li>
<li class="md-nav__item">
<a href="../../../monitor/reload/" class="md-nav__link">
reload
</a>
</li>
<li class="md-nav__item">
<a href="../../../monitor/sink/" class="md-nav__link">
sink
</a>
</li>
<li class="md-nav__item">
<a href="../../../monitor/queue/" class="md-nav__link">
queue
</a>
</li>
<li class="md-nav__item">
<a href="../../../monitor/logalert/" class="md-nav__link">
logAlert
</a>
</li>
<li class="md-nav__item">
<a href="../../../monitor/sys/" class="md-nav__link">
sys
</a>
</li>
<li class="md-nav__item">
<a href="../../../monitor/info/" class="md-nav__link">
info
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_12" >
<label class="md-nav__link" for="__nav_4_12" id="__nav_4_12_label" tabindex="0">
APIs
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_12">
<span class="md-nav__icon md-icon"></span>
APIs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../apis/help/" class="md-nav__link">
help
</a>
</li>
<li class="md-nav__item">
<a href="../../../apis/version/" class="md-nav__link">
version
</a>
</li>
<li class="md-nav__item">
<a href="../../../apis/config/" class="md-nav__link">
config
</a>
</li>
<li class="md-nav__item">
<a href="../../../apis/registry/" class="md-nav__link">
registry
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
开发手册
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
开发手册
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../developer-guide/contributing/" class="md-nav__link">
代码贡献
</a>
</li>
<li class="md-nav__item">
<a href="../../../../developer-guide/build/" class="md-nav__link">
编译构建
</a>
</li>
<li class="md-nav__item">
<a href="../../../../developer-guide/development/" class="md-nav__link">
本地开发
</a>
</li>
<li class="md-nav__item">
<a href="../../../../developer-guide/code/coding-guide/" class="md-nav__link">
代码规范
</a>
</li>
<li class="md-nav__item">
<a href="../../../../developer-guide/component/component-guide/" class="md-nav__link">
组件开发
</a>
</li>
<li class="md-nav__item">
<a href="../../../../developer-guide/release/" class="md-nav__link">
版本发布流程
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
Blog
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Blog
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../../blog/" class="md-nav__link">
Posts
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
使用场景
</a>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
使用方式
</a>
</li>
<li class="md-nav__item">
<a href="#action" class="md-nav__link">
action
</a>
<nav class="md-nav" aria-label="action">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
公共字段
</a>
<nav class="md-nav" aria-label="公共字段">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#ignoreerror" class="md-nav__link">
ignoreError
</a>
</li>
<li class="md-nav__item">
<a href="#dropiferror" class="md-nav__link">
dropIfError
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#addkey-value" class="md-nav__link">
add(key, value)
</a>
</li>
<li class="md-nav__item">
<a href="#copyfrom-to" class="md-nav__link">
copy(from, to)
</a>
</li>
<li class="md-nav__item">
<a href="#movefrom-to" class="md-nav__link">
move(from, to)
</a>
</li>
<li class="md-nav__item">
<a href="#setkey-value" class="md-nav__link">
set(key, value)
</a>
</li>
<li class="md-nav__item">
<a href="#delkey1-key2" class="md-nav__link">
del(key1, key2...)
</a>
</li>
<li class="md-nav__item">
<a href="#underrootkey" class="md-nav__link">
underRoot(key)
</a>
</li>
<li class="md-nav__item">
<a href="#fmtkey" class="md-nav__link">
fmt(key)
</a>
</li>
<li class="md-nav__item">
<a href="#timestampkey" class="md-nav__link">
timestamp(key)
</a>
</li>
<li class="md-nav__item">
<a href="#regexkey" class="md-nav__link">
regex(key)
</a>
</li>
<li class="md-nav__item">
<a href="#grokkey" class="md-nav__link">
grok(key)
</a>
</li>
<li class="md-nav__item">
<a href="#jsondecodekey" class="md-nav__link">
jsonDecode(key)
</a>
</li>
<li class="md-nav__item">
<a href="#jsonencodekey" class="md-nav__link">
jsonEncode(key)
</a>
</li>
<li class="md-nav__item">
<a href="#splitkey" class="md-nav__link">
split(key)
</a>
</li>
<li class="md-nav__item">
<a href="#strconvkey-type" class="md-nav__link">
strconv(key, type)
</a>
</li>
<li class="md-nav__item">
<a href="#tostrkey-type" class="md-nav__link">
toStr(key, type)
</a>
</li>
<li class="md-nav__item">
<a href="#print" class="md-nav__link">
print()
</a>
</li>
<li class="md-nav__item">
<a href="#return" class="md-nav__link">
return()
</a>
</li>
<li class="md-nav__item">
<a href="#dropevent" class="md-nav__link">
dropEvent()
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#condition" class="md-nav__link">
condition
</a>
<nav class="md-nav" aria-label="condition">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
操作符
</a>
</li>
<li class="md-nav__item">
<a href="#equalkey-target" class="md-nav__link">
equal(key, target)
</a>
</li>
<li class="md-nav__item">
<a href="#containkey-target" class="md-nav__link">
contain(key, target)
</a>
</li>
<li class="md-nav__item">
<a href="#existkey" class="md-nav__link">
exist(key)
</a>
</li>
<li class="md-nav__item">
<a href="#greaterkey-value" class="md-nav__link">
greater(key, value)
</a>
</li>
<li class="md-nav__item">
<a href="#lesskey-value" class="md-nav__link">
less(key, value)
</a>
</li>
<li class="md-nav__item">
<a href="#hasprefixkey-prefix" class="md-nav__link">
hasPrefix(key, prefix)
</a>
</li>
<li class="md-nav__item">
<a href="#matchkey-regex" class="md-nav__link">
match(key, regex)
</a>
</li>
<li class="md-nav__item">
<a href="#oneofkey-value1-value2" class="md-nav__link">
oneOf(key, value1, value2...)
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/loggie-io/docs/tree/main/docs/reference/pipelines/interceptor/transformer.md" title="编辑此页" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4v-2m10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1 2.1 2.1Z"/></svg>
</a>
<h1 id="transformer">transformer<a class="headerlink" href="#transformer" title="Permanent link">&para;</a></h1>
<p>带有条件判断的函数式数据处理interceptor。<br />
属于source interceptor。</p>
<h2 id="_1">使用场景<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h2>
<ul>
<li>日志提取出日志级别level并且drop掉DEBUG日志</li>
<li>日志里混合包括有json和plain的日志形式可以判断json形式的日志并且进行处理</li>
<li>根据访问日志里的status code增加不同的topic字段</li>
<li>...</li>
</ul>
<p>示例<a href="https://github.com/loggie-io/loggie/blob/main/pkg/interceptor/transformer/example/pipeline.yml">参考</a></p>
<h2 id="_2">使用方式<a class="headerlink" href="#_2" title="Permanent link">&para;</a></h2>
<p>transformer会按照配置的actions里顺序执行所有的action。action类似函数的方式可以写入参数参数一般为event里的字段。<br />
同时每个action里还可能包括额外的控制字段。比如下面regex(body)body即为regex的参数pattern为额外的字段。</p>
<div class="highlight"><pre><span></span><code><span class="nt">interceptors</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transformer</span>
<span class="w"> </span><span class="nt">actions</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">regex(body)</span>
<span class="w"> </span><span class="nt">pattern</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">^(?P&lt;time&gt;[^ ^Z]+Z) (?P&lt;level&gt;[^ ]*) (?P&lt;log&gt;.*)$</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">add(topic, common)</span>
</code></pre></div>
<p>另外action还支持条件判断<code>if-then-else</code>的方式:</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">if</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">&lt;condition&gt;</span>
<span class="w"> </span><span class="nt">then</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">funcA()</span>
<span class="w"> </span><span class="nt">else</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">funcB()</span>
</code></pre></div>
<p>其中condition条件判断也为函数的形式。</p>
<div class="highlight"><pre><span></span><code><span class="nt">interceptors</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transformer</span>
<span class="w"> </span><span class="nt">actions</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">if</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">equal(status, 404)</span>
<span class="w"> </span><span class="nt">then</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">add(topic, not_found)</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">return()</span>
</code></pre></div>
<h2 id="action">action<a class="headerlink" href="#action" title="Permanent link">&para;</a></h2>
<h3 id="_3">公共字段<a class="headerlink" href="#_3" title="Permanent link">&para;</a></h3>
<h4 id="ignoreerror">ignoreError<a class="headerlink" href="#ignoreerror" title="Permanent link">&para;</a></h4>
<ul>
<li>ignoreError: 表示是否忽略该action处理过程中的错误并且不会打印错误日志。</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<p><div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transformer</span>
<span class="w"> </span><span class="nt">actions</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">regex(body)</span>
<span class="w"> </span><span class="nt">pattern</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">(?&lt;ip&gt;\S+) (?&lt;id&gt;\S+) (?&lt;u&gt;\S+) (?&lt;time&gt;\[.*?\]) (?&lt;url&gt;\&quot;.*?\&quot;) (?&lt;status&gt;\S+) (?&lt;size&gt;\S+)</span>
<span class="w"> </span><span class="nt">ignoreError</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
</code></pre></div>
这里的ignoreError设置为true表示会忽略该正则匹配的错误并且会继续执行后续的action。</p>
</div>
<h4 id="dropiferror">dropIfError<a class="headerlink" href="#dropiferror" title="Permanent link">&para;</a></h4>
<p>表示如果出现错误直接丢弃该条event。</p>
<div class="admonition example">
<p class="admonition-title">Example</p>
<p><div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transformer</span>
<span class="w"> </span><span class="nt">actions</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">regex(body)</span>
<span class="w"> </span><span class="nt">pattern</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">(?&lt;ip&gt;\S+) (?&lt;id&gt;\S+) (?&lt;u&gt;\S+) (?&lt;time&gt;\[.*?\]) (?&lt;url&gt;\&quot;.*?\&quot;) (?&lt;status&gt;\S+) (?&lt;size&gt;\S+)</span>
<span class="w"> </span><span class="nt">dropIfError</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
</code></pre></div>
这里的dropIfError设置为true表示如果出现正则匹配的错误会直接丢弃这条日志后续action也不会执行</p>
</div>
<h3 id="addkey-value">add(key, value)<a class="headerlink" href="#addkey-value" title="Permanent link">&para;</a></h3>
<p>给event添加额外的key:value。</p>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">add(topic, loggie)</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;topic&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;loggie&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="copyfrom-to">copy(from, to)<a class="headerlink" href="#copyfrom-to" title="Permanent link">&para;</a></h3>
<p>复制event里的字段。</p>
<p>参数:</p>
<ul>
<li>from: 原有的key</li>
<li>to: 复制后的key</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">copy(foo, bar)</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;foo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;loggie&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;foo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;loggie&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;bar&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;loggie&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="movefrom-to">move(from, to)<a class="headerlink" href="#movefrom-to" title="Permanent link">&para;</a></h3>
<p>移动/重命名字段。</p>
<p>参数:</p>
<ul>
<li>from: 原有的key</li>
<li>to: 移动后的key</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">move(foo, bar)</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;foo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;loggie&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;bar&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;loggie&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="setkey-value">set(key, value)<a class="headerlink" href="#setkey-value" title="Permanent link">&para;</a></h3>
<p>更新字段key的值为value。</p>
<p>参数:</p>
<ul>
<li>key: 需更新的字段</li>
<li>value: 更新的后的值</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">set(foo, test)</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;foo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;loggie&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;foo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;test&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="delkey1-key2">del(key1, key2...)<a class="headerlink" href="#delkey1-key2" title="Permanent link">&para;</a></h3>
<p>删除字段。可填写多个字段key。</p>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">del(foo)</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;foo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;loggie&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="underrootkey">underRoot(key)<a class="headerlink" href="#underrootkey" title="Permanent link">&para;</a></h3>
<p>将嵌套的字段放在根部(最外层)。</p>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">underRoot(state)</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;state&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;node&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;127.0.0.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;phase&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;running&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;node&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;127.0.0.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;phase&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;running&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="fmtkey">fmt(key)<a class="headerlink" href="#fmtkey" title="Permanent link">&para;</a></h3>
<p>将某个字段的值重新渲染可根据其他的字段值组成一个值。如果key不存在则会新增该字段。</p>
<p>额外字段:</p>
<ul>
<li>pattern: 必填,表示格式化的规则,比如<code>${state.node}-${state.phase}</code>。如果pattern为固定值则类似set(key, value)。</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fmt(status)</span>
<span class="w"> </span><span class="nt">pattern</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">${state.node} is ${state.phase}</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;state&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;node&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;127.0.0.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;phase&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;running&quot;</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;state&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;node&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;127.0.0.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;phase&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;running&quot;</span>
<span class="w"> </span><span class="p">}</span><span class="err"></span>
<span class="w"> </span><span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;127.0.0.1 is running&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="timestampkey">timestamp(key)<a class="headerlink" href="#timestampkey" title="Permanent link">&para;</a></h3>
<p>字段的时间格式转换。</p>
<p>额外字段:</p>
<ul>
<li>fromLayout: 必填,指定字段的时间格式(golang形式),也可为<code>unix</code><code>unix_ms</code></li>
<li>fromLocation: 指定字段的时区,也可为<code>UTC</code>或者<code>Local</code>,如果为空,则为<code>UTC</code></li>
<li>toLayout: 必填,转换后的时间格式(golang形式),也可为<code>unix</code><code>unix_ms</code></li>
<li>toLocation: 转换后的时间时区,也可为<code>UTC</code>或者<code>Local</code>,如果为空,则为<code>UTC</code></li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">timestamp(time)</span>
<span class="w"> </span><span class="nt">fromLayout</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;2006-01-02</span><span class="nv"> </span><span class="s">15:04:05&quot;</span>
<span class="w"> </span><span class="nt">fromLocation</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Asia/Shanghai</span>
<span class="w"> </span><span class="nt">toLayout</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">unix_ms</span>
<span class="w"> </span><span class="nt">toLocation</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Local</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;time&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2022-06-28 11:24:35&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;time&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1656386675000</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<p>以上的layout参数需要填写golang形式可参考
<div class="highlight"><pre><span></span><code>const (
Layout = &quot;01/02 03:04:05PM &#39;06 -0700&quot; // The reference time, in numerical order.
ANSIC = &quot;Mon Jan _2 15:04:05 2006&quot;
UnixDate = &quot;Mon Jan _2 15:04:05 MST 2006&quot;
RubyDate = &quot;Mon Jan 02 15:04:05 -0700 2006&quot;
RFC822 = &quot;02 Jan 06 15:04 MST&quot;
RFC822Z = &quot;02 Jan 06 15:04 -0700&quot; // RFC822 with numeric zone
RFC850 = &quot;Monday, 02-Jan-06 15:04:05 MST&quot;
RFC1123 = &quot;Mon, 02 Jan 2006 15:04:05 MST&quot;
RFC1123Z = &quot;Mon, 02 Jan 2006 15:04:05 -0700&quot; // RFC1123 with numeric zone
RFC3339 = &quot;2006-01-02T15:04:05Z07:00&quot;
RFC3339Nano = &quot;2006-01-02T15:04:05.999999999Z07:00&quot;
Kitchen = &quot;3:04PM&quot;
// Handy time stamps.
Stamp = &quot;Jan _2 15:04:05&quot;
StampMilli = &quot;Jan _2 15:04:05.000&quot;
StampMicro = &quot;Jan _2 15:04:05.000000&quot;
StampNano = &quot;Jan _2 15:04:05.000000000&quot;
)
</code></pre></div>
还可以根据实际情况修改。 </p>
<h3 id="regexkey">regex(key)<a class="headerlink" href="#regexkey" title="Permanent link">&para;</a></h3>
<p>使用正则的方式切分日志,提取字段。
另外也可以为regex(key, to)。</p>
<p>参数:</p>
<ul>
<li>key: 必填,正则提取的字段</li>
<li>to: 非必填提取后所有的字段放置到的key。默认为空表示将字段提取到根部</li>
</ul>
<p>额外字段:</p>
<ul>
<li>pattern: 必填,正则表达式</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">regex(body)</span>
<span class="w"> </span><span class="nt">pattern</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">(?&lt;ip&gt;\S+) (?&lt;id&gt;\S+) (?&lt;u&gt;\S+) (?&lt;time&gt;\[.*?\]) (?&lt;url&gt;\&quot;.*?\&quot;) (?&lt;status&gt;\S+) (?&lt;size&gt;\S+)</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.244.0.1 - - [13/Dec/2021:12:40:48 +0000] &#39;GET / HTTP/1.1&#39; 404 683&quot;</span><span class="p">,</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;ip&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;10.244.0.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;-&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;u&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;-&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;time&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;[13/Dec/2021:12:40:48 +0000]&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;url&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;GET / HTTP/1.1&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;status&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;404&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;size&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;683&quot;</span><span class="p">,</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="grokkey">grok(key)<a class="headerlink" href="#grokkey" title="Permanent link">&para;</a></h3>
<p>使用grok的方式切分日志提取字段。
另外也可以为grok(key, to)。</p>
<p>参数:</p>
<ul>
<li>key: 必填grok提取的字段</li>
<li>to: 非必填提取后所有的字段放置到的key。默认为空表示将字段提取到根部</li>
</ul>
<p>额外字段:</p>
<ul>
<li>match: 必填grok表达式</li>
<li>ignoreBlank: 非必填默认true是否忽略空字段如果解析得到的字段key的结果为""那么结果不会写入key:""</li>
<li>pattern: 非必填自定义pattern</li>
<li>patternPaths: 非必填获取pattern的路径支持url和path其中url为解析get请求的response。这里提供一个实例的<a href="https://raw.githubusercontent.com/vjeantet/grok/master/patterns/grok-patterns">url</a>path则为本地路径如果填写的是目录则会拿目录下所有文件内可能包含的规则</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">grok(body)</span>
<span class="w"> </span><span class="nt">match</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;^%{DATESTAMP:datetime}</span><span class="nv"> </span><span class="s">%{FILE:file}:%{INT:line}:</span><span class="nv"> </span><span class="s">%{IPV4:ip}</span><span class="nv"> </span><span class="s">%{PATH:path}</span><span class="nv"> </span><span class="s">%{UUID:uuid}(?P&lt;space&gt;[a-zA-Z]?)&quot;</span>
<span class="w"> </span><span class="nt">pattern</span><span class="p">:</span><span class="w"> </span>
<span class="w"> </span><span class="nt">FILE</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;[a-zA-Z0-9._-]+&quot;</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2022/05/28 01:32:01 logTest.go:66: 192.168.0.1 /var/log/test.log 54ce5d87-b94c-c40a-74a7-9cd375289334&quot;</span><span class="p">,</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code> &quot;datetime&quot;: &quot;2022/05/28 01:32:01&quot;,
&quot;line&quot;: &quot;66&quot;,
&quot;ip&quot;: &quot;192.168.0.1&quot;,
&quot;path&quot;: &quot;/var/log/test.log&quot;,
&quot;uuid&quot;: &quot;54ce5d87-b94c-c40a-74a7-9cd375289334&quot;,
</code></pre></div></p>
</div>
<h3 id="jsondecodekey">jsonDecode(key)<a class="headerlink" href="#jsondecodekey" title="Permanent link">&para;</a></h3>
<p>将json文本反序列化。
也可以为jsonDecode(key, to)。</p>
<p>参数:</p>
<ul>
<li>key: 必填对应的字段key</li>
<li>to: 非必填提取后所有的字段放置到的key。默认为空则表示将字段提取到根部</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">jsonDecode(body)</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="err">`</span><span class="p">{</span><span class="nt">&quot;log&quot;</span><span class="p">:</span><span class="s2">&quot;I0610 08:29:07.698664 Waiting for caches to sync&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;stream&quot;</span><span class="p">:</span><span class="s2">&quot;stderr&quot;</span><span class="p">,</span><span class="w"> </span><span class="nt">&quot;time&quot;</span><span class="p">:</span><span class="s2">&quot;2021-06-10T08:29:07.698731204Z&quot;</span><span class="p">}</span><span class="err">`</span><span class="p">,</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;log&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;I0610 08:29:07.698664 Waiting for caches to sync&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;stream&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;stderr&quot;</span><span class="p">,</span><span class="w"> </span>
<span class="w"> </span><span class="nt">&quot;time&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-06-10T08:29:07.698731204Z&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="jsonencodekey">jsonEncode(key)<a class="headerlink" href="#jsonencodekey" title="Permanent link">&para;</a></h3>
<p>将多个字段序列化成json string形式。
也可以为jsonEncode(key, to)。</p>
<p>参数:</p>
<ul>
<li>key: 必填对应的字段key</li>
<li>to: 非必填提取后所有的字段放置到的key。默认为空则表示将字段提取到根部</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="nt">interceptors</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transformer</span>
<span class="w"> </span><span class="nt">actions</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">jsonEncode(fields)</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;this is test&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;fields&quot;</span><span class="p">:</span>
<span class="w"> </span><span class="nt">&quot;topic&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;loggie&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;foo&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;bar&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;fields&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;{\&quot;topic\&quot;:\&quot;loggie\&quot;,\&quot;foo\&quot;:\&quot;bar\&quot;}&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;this is test&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="splitkey">split(key)<a class="headerlink" href="#splitkey" title="Permanent link">&para;</a></h3>
<p>将一行日志根据某种分割符切分。</p>
<p>参数:</p>
<ul>
<li>key: 必填对应的字段key</li>
<li>to: 非必填提取后所有的字段放置到的key。默认为空则表示将字段提取到根部</li>
</ul>
<p>额外字段:</p>
<ul>
<li>separator: 分隔符string必填</li>
<li>max: 通过分割符分割后得到的最多的字段数int非必填默认值为-1</li>
<li>keys: 分割后字段对应的keystring数组必填</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="w"> </span><span class="nt">interceptors</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transformer</span>
<span class="w"> </span><span class="nt">actions</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">split(body)</span>
<span class="w"> </span><span class="nt">separator</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;|&quot;</span>
<span class="w"> </span><span class="nt">keys</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="s">&quot;time&quot;</span><span class="p p-Indicator">,</span><span class="w"> </span><span class="s">&quot;order&quot;</span><span class="p p-Indicator">,</span><span class="w"> </span><span class="s">&quot;service&quot;</span><span class="p p-Indicator">,</span><span class="w"> </span><span class="s">&quot;price&quot;</span><span class="p p-Indicator">]</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code> &quot;body&quot;: `2021-08-08|U12345|storeCenter|13.14`,
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code> &quot;time&quot;: &quot;2021-08-08&quot;
&quot;order&quot;: &quot;U12345&quot;
&quot;service&quot;: &quot;storeCenter&quot;
&quot;price: &quot;13.14&quot;
</code></pre></div></p>
</div>
<h3 id="strconvkey-type">strconv(key, type)<a class="headerlink" href="#strconvkey-type" title="Permanent link">&para;</a></h3>
<p>字段值类型转换。</p>
<p>参数:</p>
<ul>
<li>key: 目标字段</li>
<li>type: 转换后的类型,可为<code>bool</code>, <code>int</code>, <code>float</code></li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">strconv(code, int)</span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;code&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;200&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;code&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span>
<span class="p">}</span>
</code></pre></div></p>
</div>
<h3 id="tostrkey-type">toStr(key, type)<a class="headerlink" href="#tostrkey-type" title="Permanent link">&para;</a></h3>
<p>将字段值转换为字符串。</p>
<p>参数:</p>
<ul>
<li>key: 目标字段</li>
<li>type: 转换前的字段类型,可为<code>bool</code>, <code>int</code>, <code>float</code>, <code>int64</code>, <code>float64</code>。非必填,如果已知字段类型,建议填写,填写时请自行保证类型正确,否则可能导致转换失败;如果未填写,将根据反射获取字段类型,可能会对采集效率产生影响。</li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">toStr(code, int)</span><span class="w"> </span>
</code></pre></div>
<p>input:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;code&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span>
<span class="p">}</span>
</code></pre></div></p>
<p>output:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;2021-02-16T09:21:20.545525544Z DEBUG this is log body&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;code&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;200&quot;</span>
<span class="p">}</span><span class="w"> </span>
</code></pre></div></p>
</div>
<h3 id="print">print()<a class="headerlink" href="#print" title="Permanent link">&para;</a></h3>
<p>打印event。一般用于调试阶段使用。</p>
<h3 id="return">return()<a class="headerlink" href="#return" title="Permanent link">&para;</a></h3>
<p>控制类型函数执行到return()后返回不再继续执行下面的action。</p>
<h3 id="dropevent">dropEvent()<a class="headerlink" href="#dropevent" title="Permanent link">&para;</a></h3>
<p>控制类型函数执行到dropEvent()后会将该event直接丢弃。这意味着该条数据会丢失也不会继续被后续的interceptor或者sink处理消费。</p>
<div class="admonition example">
<p class="admonition-title">Example</p>
<p><div class="highlight"><pre><span></span><code><span class="nt">interceptors</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transformer</span>
<span class="w"> </span><span class="nt">actions</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">regex(body)</span>
<span class="w"> </span><span class="nt">pattern</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">^(?P&lt;time&gt;[^ ^Z]+Z) (?P&lt;level&gt;[^ ]*) (?P&lt;log&gt;.*)$</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">if</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">equal(level, DEBUG)</span>
<span class="w"> </span><span class="nt">then</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">dropEvent()</span>
</code></pre></div>
假设日志为:<code>2021-02-16T09:21:20.545525544Z DEBUG this is log body</code>则满足level字段为DEBUG会直接丢弃该条日志。</p>
</div>
<h2 id="condition">condition<a class="headerlink" href="#condition" title="Permanent link">&para;</a></h2>
<p>条件判断类函数。</p>
<h3 id="_4">操作符<a class="headerlink" href="#_4" title="Permanent link">&para;</a></h3>
<ul>
<li>AND表示两个condition执行结果的<code></code></li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="nt">interceptors</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transformer</span>
<span class="w"> </span><span class="nt">actions</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">if</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">equal(level, DEBUG) AND equal(code, 200)</span>
<span class="w"> </span><span class="nt">then</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">dropEvent()</span>
</code></pre></div>
</div>
<ul>
<li>OR表示两个condition执行结果的<code></code></li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="nt">interceptors</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transformer</span>
<span class="w"> </span><span class="nt">actions</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">if</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">equal(level, DEBUG) OR equal(level, INFO)</span>
<span class="w"> </span><span class="nt">then</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">dropEvent()</span>
</code></pre></div>
</div>
<ul>
<li>NOT表示对condition执行结果取<code></code></li>
</ul>
<div class="admonition example">
<p class="admonition-title">Example</p>
<div class="highlight"><pre><span></span><code><span class="nt">interceptors</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">transformer</span>
<span class="w"> </span><span class="nt">actions</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">if</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">NOT equal(level, DEBUG)</span>
<span class="w"> </span><span class="nt">then</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">dropEvent()</span>
</code></pre></div>
</div>
<h3 id="equalkey-target">equal(key, target)<a class="headerlink" href="#equalkey-target" title="Permanent link">&para;</a></h3>
<p>目标字段值是否和参数值target相等。</p>
<h3 id="containkey-target">contain(key, target)<a class="headerlink" href="#containkey-target" title="Permanent link">&para;</a></h3>
<p>字段值是否包含参数值target。</p>
<div class="admonition caution">
<p class="admonition-title">Caution</p>
<p>target请直接使用字符串无需添加双引号。
比如<code>contain(body, error)</code>,而不是<code>contain(body, "error")</code><code>contain(body, "error")</code>会被当作<code>"error"</code>来匹配。</p>
</div>
<h3 id="existkey">exist(key)<a class="headerlink" href="#existkey" title="Permanent link">&para;</a></h3>
<p>目标字段是否存在或者是否为空。</p>
<h3 id="greaterkey-value">greater(key, value)<a class="headerlink" href="#greaterkey-value" title="Permanent link">&para;</a></h3>
<p>目标字段的值是否大于参数值value。</p>
<h3 id="lesskey-value">less(key, value)<a class="headerlink" href="#lesskey-value" title="Permanent link">&para;</a></h3>
<p>目标字段的值是否小于参数值value。</p>
<h3 id="hasprefixkey-prefix">hasPrefix(key, prefix)<a class="headerlink" href="#hasprefixkey-prefix" title="Permanent link">&para;</a></h3>
<p>目标字段的值是否包含prefix前缀。</p>
<h3 id="matchkey-regex">match(key, regex)<a class="headerlink" href="#matchkey-regex" title="Permanent link">&para;</a></h3>
<p>目标字段的值是否和参数regex正则匹配。</p>
<h3 id="oneofkey-value1-value2">oneOf(key, value1, value2...)<a class="headerlink" href="#oneofkey-value1-value2" title="Permanent link">&para;</a></h3>
<p>目标字段的值是否是参数值value1...其中之一。</p>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
回到页面顶部
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2022 Loggie.io
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://github.com/loggie-io" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</a>
<a href="https://hub.docker.com/r/loggieio/loggie" target="_blank" rel="noopener" title="hub.docker.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../../..", "features": ["content.code.annotate", "content.tabs.link", "navigation.instant", "navigation.sections", "search.highlight", "search.share", "search.suggest", "navigation.tabs", "navigation.tracking", "navigation.tabs.sticky", "navigation.top", "content.code.copy", "content.action.edit"], "search": "../../../../assets/javascripts/workers/search.74e28a9f.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}, "version": {"provider": "mike"}}</script>
<script src="../../../../assets/javascripts/bundle.220ee61c.min.js"></script>
</body>
</html>