

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 模式
<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* >，并*number*指明与其他动态令牌相比，该标记在模式中的显示位置。

动态令牌的常见示例包括错误代码、IP 地址、时间戳和请求 IDs。

**模式命令输出**

 `pattern` 命令将生成以下输出：
+ `@pattern`：在日志事件字段中重复出现的共有的文本结构。在模式内变化的字段（例如请求 ID 或时间戳）由*令牌*表示。如果 CloudWatch Logs 可以确定动态令牌所代表的数据类型，则它会将该令牌显示为`<string-number>`。*string*是对令牌所代表的数据类型的描述。*number*显示了与其他动态代币相比，该代币在模式中的显示位置。

  CloudWatch Logs 根据对包含该名称的日志事件内容的分析来分配名称的字符串部分。

  如 CloudWatch 果 Logs 无法推断出动态令牌所代表的数据类型，则将其显示为 <Token-*number* >，并*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
```