# ログのフィルター処理

> Query and filter your structured logs using a custom query language with operators and boolean expressions.

ロギングサービスは、構造化されたログを簡単にフィルター処理できるカスタムクエリ言語をサポートします。このセクションでは、クエリ言語の構文と使用方法を説明し、開始に役立ついくつかの例を提供します。

## 基本的な構文と演算子##basic-syntax-and-operators

フィルタークエリは、1 つ以上の条件から構成されます。条件の基本構文は、以下のコンポーネントから構成されます。

| **コンポーネント** | **条件**                                                    |
| ----------- | --------------------------------------------------------- |
| フィールド       | フィルター処理する `severityText`、`body`、`logAttributes` などのフィールド。 |
| 演算子         | サポートされる演算子の 1 つ。以下の演算子の表を参照してください。                        |
| 値           | フィールドと比較する値。                                              |

サポートされる演算子のリストについては、以下の表を参照してください。

| **演算子** | **意味**                |
| ------- | --------------------- |
| `=`     | 等しい                   |
| `!=`    | 等しくない                 |
| `~=`    | 含む (`body` でのみ使用可能)   |
| `!~=`   | 含まない (`body` でのみ使用可能) |
| `\>`    | より大きい                 |
| `<`     | より小さい                 |
| `<=`    | 以下                    |
| `\>=`   | 以上                    |

## ブーリアン式とグループ化##boolean-expressions-and-grouping

ブーリアン式とかっこを使用したグループ化を使用して、複雑なフィルタークエリを作成できます。これにより、複数の条件を組み合わせて正確なフィルターを作成できます。

| **ブーリアン式**      | **意味**                                   |
| --------------- | ---------------------------------------- |
| `AND` または `&&`  | 両辺の条件が両方とも true である必要があります。              |
| `OR` または `\|\|` | 両辺の条件の少なくとも 1 つが true である必要があります。        |
| グループ化           | かっこ ( と ) を使用して式をグループ化し、評価の順序をコントロールします。 |

クエリの記述を単純化するために、改行もブーリアン `AND` として解釈されます。これは、すべてを照合する必要がある場合に、行ごとに 1 つの条件を記述できることを意味します。

## フィルタークエリの例##examples-of-filter-queries

特定の重大度レベルのすべてのログを選択します。

```text
severityText = "ERROR"
```

特定の重大度レベルより上のすべてのログを Cloud Code から選択します (改行は AND として扱われます)。

```text
resourceAttributes.service.name = "cloud-code"
severityNumber >= 12
```

メッセージ内の特定の単語を含むログを除外します。

```text
body !~= "healthcheck"
```

複数の条件とグループ化を組み合わせます (重大度のエイリアスを使用)。

```text
(logAttributes.event.name = "example-event" AND body ~= "timeout") OR (logAttributes.custom.counter > 9000 AND severity = "WARN")
```

### ノート##notes

以下のノートは、フィルタークエリ言語に適用されます。

* 利便性のために `severityText` フィールドも `severity` としてエイリアス化されます
* ファジーマッチ演算子 (~~= と !~~=) は `body` フィールドでのみサポートされます
* `logAttributes` キーでは大文字と小文字が区別されます
* `logAttributes` 値は自動的に文字列に変換されます
