

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# pattern
<a name="CWL_QuerySyntax-Pattern"></a>

 使用 `pattern` 自動將您的日誌資料叢集化，以形成模式。

模式是指日誌欄位之間反覆出現的共同文字結構。您可以使用 `pattern` 來顯示新興趨勢、監控已知錯誤，以及識別經常發生或高成本的日誌行。CloudWatch Logs Insights 也提供主控台體驗，您可以用來尋找並進一步分析日誌事件中的模式。如需詳細資訊，請參閱[模式分析](CWL_AnalyzeLogData_Patterns.md)。

由於 `pattern`命令會自動識別常見模式，因此您可以使用它做為搜尋和分析日誌的起點。您也可以將 `pattern` 與 ` filter`、` parse` 或 ` sort` 命令搭配使用，在更多經過微調的查詢中識別模式。

**模式命令輸入**

 `pattern` 命令需有以下任何一項輸入：`@message` 欄位、以 ` parse` 命令建立的擷取欄位，或使用一或多個[字串函數](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html#CWL_QuerySyntax-string-functions)操控的字串。

如果 CloudWatch Logs 無法推斷動態權杖所代表的資料類型， 會顯示為 <Token-*number*>，而*數字*指出此權杖相較於其他動態權杖，出現在模式中的位置。

動態字符的常見範例包括錯誤代碼、IP 地址、時間戳記和請求 IDs。

**模式命令輸出**

 `pattern` 命令會產生以下輸出：
+ `@pattern`：日誌事件欄位之間反覆出現的共同文字結構。模式內不同的欄位，例如請求 ID 或時間戳記，會以*字符*表示。如果 CloudWatch Logs 可以判斷動態字符代表的資料類型，則會將字符顯示為 `<string-number>`。*字串*是字符所代表資料類型的描述。相較於其他動態字符，*數字*會顯示此字符在模式中的顯示位置。

  CloudWatch Logs 會根據分析包含該名稱的日誌事件內容來指派名稱的字串部分。

  如果 CloudWatch Logs 無法推斷動態權杖所代表的資料類型， 會顯示為 <Token-*number*>，而*數字*指出此權杖相較於其他動態權杖，在模式中顯示的位置。

  例如，`[INFO] Request time: <Time-1> ms` 是日誌訊息 `[INFO] Request time: 327 ms` 可能的輸出。
+ `@ratio`：所選期間和指定日誌群組中，符合已識別模式的日誌事件比例。例如，如果選取的日誌群組和期間中有一半的日誌事件符合模式，`@ratio` 就會傳回 `0.50`
+ `@sampleCount`：所選期間和指定日誌群組中，符合已識別模式的日誌事件數量。
+ `@severityLabel`：日誌嚴重性或層級，指明日誌中的資訊類型，例如 `Error`、`Warning`、`Info` 或 `Debug`。

**範例**

以下命令會識別所選時間範圍內指定日誌群組中具有類似結構的日誌，並依模式和數量將其分組

```
pattern @message
```

`pattern` 命令可以與 ` filter` 命令搭配使用

```
filter @message like /ERROR/
| pattern @message
```

`pattern` 命令可與 ` parse` 和 ` sort` 命令搭配使用

```
filter @message like /ERROR/
| parse @message 'Failed to do: *' as cause
| pattern cause
| sort @sampleCount asc
```