tencent cloud

Cloud Log Service

フィールド処理関数

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-12 15:02:20
AI翻訳

概要

フィールド処理関数は、ログ内のフィールドに対して、値の取得、追加、削除、検索、変更などの処理を行います。

v関数

関数定義

フィールド値を取得し、対応する文字列を返します。

構文記述

v(フィールド名)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
field
フィールド名
string
はい
-
-

例

「message」フィールドの値を取得し、それを新しいフィールド「new_message」に代入します。
元のログ:
{"message": "failed", "status": "500"}
加工ルール:
fields_set("new_message", v("message"))
加工結果:
{"message": "failed", "new_message": "failed","status": "500"}

fields_drop関数

関数定義

フィールド名に基づいてマッチングを行い、マッチしたフィールドを削除します。

構文記述

fields_drop(フィールド名1, フィールド名2, ..., regex=False,nest=False)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
可変引数、フィールド名またはフィールド名の正規表現
可変引数、フィールド名またはフィールド名の正規表現
string
はい
-
-
regex
正規表現を有効にするかどうか、マッチングモードは完全一致です。
bool
いいえ
False
-
nest
ネストされたフィールドかどうか
bool
いいえ
False
-

例

示例1:フィールド名が「field」のフィールドを削除します。
元のログ:
{"field": "a,b,c", "status": "500"}
加工ルール:
fields_drop("field")
加工結果:
{"status":"500"}
例2:ネストされたフィールドの処理。
元のログ:
{"condition":"{\\"a\\":\\"aaa\\", \\"c\\":\\"ccc\\", \\"e\\":\\"eee\\"}","status":"500"}
加工ルール:
//nest=True、このフィールドはネストされたフィールドであることを示します。condition.aとcondition.cを破棄した後、condition.eフィールドのみが残ります。
t_if(if_json(v("condition")), fields_drop("condition.a", "condition.c", nest=True))
加工結果:
{"condition":"{\\"e\\":\\"eee\\"}","status":"500"}
例3:ネストされたフィールドの処理。
元のログ:
{"App": "thcomm","Message": "{\\"f_httpstatus\\": \\"200\\",\\"f_requestId\\": \\"2021-11-09 08:40:17.832\\tINFO\\tservices/http_service.go:361\\tbb20ac02-fcbc-4a56-b1f1-4064853b79da\\",\\"f_url\\": \\"wechat.wecity.qq.com/trpcapi/MbpsPaymentServer/scanCode\\"}"}
加工ルール:
//nest=True、このフィールドはネストされたフィールドであることを示します。Message.f_requestId", Message.f_urlを破棄した後、f_httpstatusフィールドのみが残ります。
t_if(if_json(v("Message")), fields_drop("Message.f_requestId", "Message.f_url", nest=True))
加工結果:
{"App":"thcomm","Message":"{\\"f_httpstatus\\":\\"200\\"}"}

fields_keep関数

関数定義

フィールド名に基づいてマッチングを行い、マッチしたフィールドを保持します。

構文記述

fields_keep(フィールド名1, フィールド名2, ..., regex=False)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
可変引数、フィールド名またはフィールド名の正規表現
可変引数、フィールド名またはフィールド名の正規表現
string
はい
-
-
regex
正規表現を有効にするかどうか、マッチングモードは完全一致です。
bool
いいえ
False
-

例

フィールド名が「field」のフィールドを保存し、その他のフィールドは破棄します。
元のログ:
{"field": "a,b,c", "status": "500"}
加工ルール:
fields_keep("field")
加工結果:
{"field":"a,b,c"}

fields_pack関数

関数定義

正規表現に基づいてフィールド名をマッチングし、マッチングしたフィールドを新しいフィールドにパッケージ化します。新しいフィールド値はJSON形式で構成されます。

構文記述

fields_pack(対象フィールド名, include=".*", exclude="", drop_packed=False)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
output
パッケージ化後の新しいフィールド名
string
はい
-
-
include
フィールド名を含む正規表現
string
いいえ
-
-
exclude
除外するフィールド名の正規表現
string
いいえ
-
-
drop_packed
元のパッケージ化されたフィールドを削除するかどうか
bool
いいえ
False
-

例

元のログ:
{"field_a": "a,b,c","field_b": "abc", "status": "500"}
加工ルール:
fields_pack("new_field","field.*", drop_packed=False)
加工結果:
{"new_field":"{\\"field_a\\":\\"a,b,c\\",\\"field_b\\":\\"abc\\"}","field_a":"a,b,c","field_b":"abc","status":"500"}

fields_set関数

関数定義

フィールド値を設定するか、または新しいフィールドを追加するために使用します。

構文記述

fields_set(フィールド名1, フィールド値1, フィールド名2, フィールド値2, mode="overwrite")

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
可変引数
key、valueが交互に並ぶパラメータリスト
string
-
-
-
mode
フィールド上書きモード
string
いいえ
overwrite

例

例1:レベルを「Info」から「Warning」に変更します。
元のログ:
{"级别": "Info"}
加工ルール:
fields_set("级别", "Warning")
加工結果:
{"级别":"Warning"}
例2:2つのフィールド「new」と「new2」を追加します。
元のログ:
{"a": "1", "b": "2", "c": "3"}
加工ルール:
fields_set("new", v("b"), "new2", v("c"))
加工結果:
{"a":"1","b":"2","c":"3","new":"2","new2":"3"}

fields_rename関数

関数定義

フィールド名を変更します。

構文記述

fields_rename(フィールド名1, 新フィールド名1, フィールド名2, 新フィールド名2, regex=False)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
可変引数
旧フィールド名、新フィールド名が交互に並ぶパラメータリスト
string
-
-
-
regex
フィールド名で正規表現マッチングを有効にするかどうかです。有効にすると正規表現で旧フィールド名をマッチングし、無効にすると等価マッチングを行います。
bool
いいえ
False
-

例

元のログ:
{"regieeen": "bj", "status": "500"}
加工ルール:
fields_rename("reg.*", "region", regex=True)
加工結果:
{"region":"bj","status":"500"}

has_field関数

関数定義

フィールドが存在する場合はTrueを返し、それ以外の場合はFalseを返します。

構文記述

has_field(フィールド名)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
field
フィールド名
string
はい
-
-

例

元のログ:
{"regiooon": "bj", "status": "500"}
加工ルール:
t_if(has_field("regiooon"), fields_rename("regiooon", "region"))
加工結果:
{"region":"bj","status":"500"}

not_has_field関数

関数定義

フィールドが存在しない場合はTrueを返し、それ以外の場合はFalseを返します。

構文記述

not_has_field(フィールド名)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
field
フィールド名
string
はい
-
-

例

元のログ:
{"status": "500"}
加工ルール:
t_if(not_has_field("message"), fields_set("no_message", true))
加工結果:
{"no_message":"true","status":"500"}

extract_tag関数

関数定義

動的に生成されたトピックにTagを付けます。ログフィールドからTag値を抽出し、これらのTag値を動的に生成されたトピックのTagとして設定します。
注意:
log_auto_output() 関数の後でのみ使用できます。
そのうち、静的Tagと動的Tagの合計数は10ペアを超えません。
例えばこのステートメント:log_auto_output(v("pd"),"我的日志集",index_options="content_index", period=3,tag_static="Ckafka:test_env,developer:MikeWang",tag_dynamic=extract_tag("pd",v("pd"),"team", v("team")))は、tag_static静的Tagとtag_dynamic動的Tagを使用しています。

構文記述

extract_tag(タグ名1、タグ値1、タグ名2、タグ値2....)

パラメータ説明

パラメータ名
パラメータ説明
パラメータタイプ
必須かどうか
パラメータのデフォルト値
パラメータの値の範囲
Tag名
Tag名
string
はい
-
-
Tag値
Tag値
string
はい
-
-

例

元のログ:
[
{"pd": "CDN", "team": "test"},
{"pd": "CLS", "team": "product"},
{"pd": "COS", "team": "sales"},
{"pd": "CLS", "team": "test"},
{"pd": "CKafka", "team": "product"}
]
説明:
同じログトピックで同じTag名の場合、最も早いTag値のみが有効になります。この例では、名前がCLSのログトピックにおいて、team:productが最も早いTag値であり、このTagが有効になります。後続のteam:test Tagは、Tag名が同じであるため有効になりません。
加工ルール:
log_auto_output(v("pd"),"我的日志集",index_options="content_index", period=3,tag_static="Ckafka:test_env",tag_dynamic=extract_tag("pd",v("pd"),"team", v("team")))
加工結果:
COS、CKafka、CLS、CDNという名前のログトピックを生成し、これらのログトピックにTagを付けました。ステートメントには静的Tag tag_staticが1ペア、動的Tag tag_dynamicが2ペアあり、そのため合計3ペアのTagが生成されました。


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック