${変数名}を通じてプリセットフィールド変数を参照することをサポートしています。例えば${RequestHost}です。サポートされているプリセットフィールドの一覧は七層アクセスログを参照してください。変数 | 意味 | 例 |
${http.request.headers['key']} | クライアントがリクエストした指定ヘッダーの値 | ${http.request.headers['user-agent']} |
${http.response.headers['key']} | EOがクライアントに応答する指定ヘッダーの値 | ${http.response.headers['content-type']} |
${http.request.cookie['key']} | クライアントがリクエストしたCookie内の指定フィールドの値 | ${http.request.cookie['session_id']} |
${http.request.body} | HTTPリクエストボディ | ${http.request.body} |
'abc'です。数値定数は直接2または0.2と記述できます。\\\\\\\\、\\\\'、\\\\\\"、\\\\/、\\\\b、\\\\f、\\\\t、\\\\uHHHH。カテゴリ | 演算子 | 説明 |
算術演算子 | +、-、*、/ | 前後とも数値型である必要があります。 |
比較演算子 | <、<=、>、>= | 前後とも数値型である必要があります。 |
比較演算子 | ==、!= | 前後とも数値型、または両方とも文字列型である必要があります。 |
論理演算子 | &&、|| | 数式パラメータ内でのみ使用します(例: if)。 |
関数名 | 使い方 | 機能 | 例(入力式) | 例(出力値) |
concat | concat(String1, String2, ..., StringN) | 複数の値を1つの文字列に連結します。 | concat('Hello, ', 'World', '!') | Hello, World! |
encode_uri | encode_uri(source) | URI内の破壊的な文字(スペース、漢字など)をエンコードし、 :/?.&=#の構造文字は保持します。 | encode_uri('https://example.com/search?q=hello world') | https://example.com/search?q=hello%20world |
lower | lower(str) | 文字列を小文字に変換します。 | lower('Hello World') | hello world |
upper | upper(str) | 文字列を大文字に変換します。 | upper('Hello World') | HELLO WORLD |
regexp_replace | regexp_replace(source, regex, replacement) | 正規表現による置換 | regexp_replace('Chrome/120.0.0', 'Chrome/[0-9.]+', 'Chrome/<ver>') | Chrome/<ver> |
regexp_extract | regexp_extract(expr, pattern[, index]) | 正規表現で抽出します。 indexが0の場合は一致内容全体を返し、1、2、3...の場合は対応する番号のキャプチャグループを返します。indexが省略された場合はデフォルトで0になります。 | regexp_extract('Chrome/120.0.0', 'Chrome/([0-9.]+)', 1) | 120.0.0 |
if | if(predicate, then, else) | 条件に応じて異なる値を返します。 | if(1 < 2, 'yes', 'no') | yes |
cast | cast(expr, type) | 値の型を変換します。 typeはLONG、DOUBLE、またはSTRINGです。 | cast(200, 'STRING') | 200 |
timestamp_format | timestamp_format(expr[, pattern[, timezone]]) | UNIX epochのミリ秒タイムスタンプを指定の形式に変換します。 patternはJoda-Time形式に従い、入力しない場合はデフォルトでISO 8601になります。timezoneはJoda-Timeのタイムゾーン名(例:Asia/Shanghai)または固定オフセット(例:+08:00)をサポートし、省略時はUTCを使用します。 | timestamp_format(1700000000000, 'yyyy-MM-dd HH:mm:ss') | 2023-11-14 22:13:20 |
unix_timestamp | unix_timestamp(timestamp) | ISO 8601時間文字列をUNIX epochの秒タイムスタンプに変換します。 | unix_timestamp('2023-11-14T22:13:20Z') | 1700000000 |
_)のみで、先頭は英字である必要があります。'a' + ${RequestHost})。連結にはconcat()式を使用してください。$を入力すると、プリセット変数の候補が表示されます。数式名を入力すると、数式のクイック検索がトリガーされます。ClientInfoconcat('host=', ${RequestHost}, ' ip=', ${ClientIP}, ' status=', ${EdgeResponseStatusCode})
"ClientInfo": "host=www.example.com ip=1.2.3.4 status=200"
StatusCategoryif(${EdgeResponseStatusCode}>=200 && ${EdgeResponseStatusCode}<300, 'success', 'error')
>=、<比較演算子と&&論理演算子を組み合わせて、if式で条件判断を実現します。"StatusCategory": "success"
"StatusCategory": "error"
Content-Typeを取得します。ContentType${http.response.headers['content-type']}
"ContentType": "text/html; charset=utf-8"
ChromeVersionregexp_extract(${http.request.headers['user-agent']}, 'Chrome/([0-9.]+)', 1)
regexp_extract式の3番目のパラメータはキャプチャグループの番号であり、1は最初のキャプチャグループ([0-9.]+)の内容を抽出することを示します。"ChromeVersion": "120.0.0"
RequestTimeFormattedtimestamp_format(unix_timestamp(${RequestTime})*1000, 'yyyy-MM-dd HH:mm:ss', 'Asia/Shanghai')
${RequestTime}はISO 8601形式の文字列であり、unix_timestamp()によって秒単位のタイムスタンプに変換してから1000を掛けてミリ秒値を取得し、さらにtimestamp_format()によってフォーマットして出力します。3番目のパラメータ'Asia/Shanghai'は出力タイムゾーンを北京時間として指定し、省略時はUTCを使用します。"RequestTimeFormatted": "2025-08-06 14:30:00"
<custom_field_value> ::= <expr><expr> ::= <term> ("+" | "-" <term>)*<term> ::= <factor> ("*" | "/" | "%" <factor>)*<factor> ::= ("-")? <primary><primary> ::= <num> | <literal_string> | <var> | <func_call> | "(" <expr> ")"<var> ::= "$" "{" <var_name> (<index_key>)? "}"<var_name> ::= [a-zA-Z] ([a-zA-Z0-9] | "_" | ".")*<index_key> ::= "[" <literal_string> "]"<func_call> ::= <func_name> "(" (<func_args>)? ")"<func_name> ::= [a-z] ([a-z] | [0-9] | "_")*<func_args> ::= <func_arg> ("," <func_arg>)*<func_arg> ::= <logic_or><logic_or> ::= <logic_and> ("||" <logic_and>)*<logic_and> ::= <comparison> ("&&" <comparison>)*<comparison> ::= <expr> (<cmp_op> <expr>)?<cmp_op> ::= "==" | "!=" | ">=" | "<=" | ">" | "<"<num> ::= [0-9]+ ("." [0-9]+)?<literal_string> ::= "'" (<ls_plain> | <ls_escape>)* "'"<ls_escape> ::= "\\" ("'" | """ | "\\" | "/" | "b" | "f" | "t" | <unicode_esc>)<unicode_esc> ::= "u" <hex> <hex> <hex> <hex><hex> ::= [0-9] | [a-f] | [A-F]<ls_plain> ::= [a-zA-Z0-9] | " " | "!" | """ | "#" | "$" | "%" | "&" | "("| ")" | "*" | "+" | "," | "-" | "." | "/" | ":" | ";" | "<"| "=" | ">" | "?" | "@" | "[" | "]" | "^" | "_" | "`"| "{" | "|" | "}" | "~"
フィードバック