# 로그 필터링

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

로깅 서비스는 구조화된 로그를 쉽게 필터링할 수 있도록 커스텀 쿼리 언어를 지원합니다. 이 섹션에서는 쿼리 언어의 구문과 사용법을 안내하고, 시작에 도움이 되는 몇 가지 예시를 제공합니다.

## 기본 구문 및 연산자##basic-syntax-and-operators

필터 쿼리는 하나 이상의 조건으로 구성됩니다. 조건의 기본 구문은 다음 요소로 구성됩니다.

| **구성 요소** | **조건**                                                     |
| --------- | ---------------------------------------------------------- |
| Field     | 필터링할 필드(예: `severityText`, `body`, 또는 `logAttributes`)입니다. |
| Operator  | 지원되는 연산자 중 하나입니다. 아래의 연산자 표를 참고하십시오.                       |
| Value     | 해당 필드와 비교할 값입니다.                                           |

아래 표에서 지원되는 연산자의 목록을 참고하십시오.

| **연산자** | **의미**                   |
| ------- | ------------------------ |
| `=`     | 같음                       |
| `!=`    | 같지 않음                    |
| `~=`    | 포함(`body`에서만 사용 가능)      |
| `!~=`   | 포함하지 않음(`body`에서만 사용 가능) |
| `\>`    | 초과                       |
| `<`     | 미만                       |
| `<=`    | 이하                       |
| `\>=`   | 이상                       |

## 부울 표현식 및 그룹화##boolean-expressions-and-grouping

부울 표현식을 사용하고 괄호로 그룹화하여 복잡한 필터 쿼리를 만들 수 있습니다. 이렇게 하면 여러 조건을 조합하여 정확한 필터를 생성할 수 있습니다.

| **부울 표현식**     | **의미**                                          |
| -------------- | ----------------------------------------------- |
| `AND` 또는 `&&`  | 양쪽의 조건이 모두 참이어야 합니다.                            |
| `OR` 또는 `\|\|` | 양쪽의 조건 중 하나 이상이 참이어야 합니다.                       |
| 그룹화            | 괄호 ‘(’, ‘)’를 사용하여 표현식을 그룹화하여 평가 순서를 제어할 수 있습니다. |

쿼리 작성을 간소화하기 위해 라인 피드도 `AND` 부울로 변환됩니다. 즉, 모든 조건이 일치하기를 원한다면 한 줄에 조건을 하나씩 작성하면 됩니다.

## 필터 쿼리 예시##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` 값은 문자열로 자동 전환됩니다.
