
# keenauth logs tail로 로그 따라가기

`keenauth logs tail`은 `tail -f`처럼 작업하는 동안 환경의 로그(로그인, 세션, 토큰, MFA, 공격 방어)를 따라갑니다. 가장 최근 기록을 먼저 출력하되 오래된 순서로 보여 준 뒤, 고정된 간격으로 새 기록을 확인하고 나타나는 대로 출력합니다. 중지하려면 Ctrl-C를 누르십시오. 그러면 명령이 종료 코드 0으로 끝납니다.

이 명령은 `keenauth logs list`와 같은 기록을 읽으며 같은 권한(`logs:read`)이 필요합니다. API 키와 `keenauth login` 세션 모두에서 동작합니다.

## 사용법

```sh
keenauth logs tail --type authentication. --user usr_01j9z3k4m5n6p7q8r9s0t1v2w3
```

| 플래그 | 설명 |
|---|---|
| `--type` | 로그 유형 접두사(예: `authentication.` 또는 `session.created`). 쉼표로 구분하거나 반복할 수 있으며 최대 20개입니다. 이 중 하나와 일치하는 기록이 표시됩니다. |
| `--user` | 이 사용자(`usr_…`)의 기록만 표시합니다. |
| `--org` | 이 조직(`org_…`)의 기록만 표시합니다. |
| `--limit` | 따라가기 전에 출력할 최근 기록 수(1~100). 기본값: 20. |
| `--interval` | 두 번 확인하는 사이의 시간(`1s`~`60s`). 기본값: `5s`. |
| `--output`, `-o` | `table`, `json` 또는 `yaml`. 플래그를 생략하면 터미널에서는 표, 그 외에는 JSON으로 출력합니다. |

잘못된 필터나 간격을 지정하면 요청을 보내기 전에 종료 코드 2로 명령이 중단됩니다.

## 출력

- `table`: 기록마다 한 줄씩, 시간(UTC), 유형, 결과, 사용자, 조직, 로그 ID를 표시합니다. 값이 없으면 `-`로 표시합니다.
- `json`: 기록마다 JSON 객체 하나를 한 줄에 출력합니다(줄바꿈으로 구분된 JSON). `keenauth logs get`이 반환하는 객체와 같습니다. 표준 출력이 터미널이 아닐 때의 기본값이므로 예를 들어 `jq`로 파이프할 수 있습니다.
- `yaml`: 기록마다 `---`로 시작하는 YAML 문서 하나를 출력합니다.

```sh
keenauth logs tail --type authentication.failed -o json | jq -r '.ip_country'
```

IP 주소, 사용자 에이전트, 식별자 힌트는 자격 증명에 [로그 API](/docs/api/management/logs/list)에 설명된 권한이 있는 경우에만 표시됩니다.

## 따라가는 방식

로그 API는 가장 최근 기록을 먼저 반환하며 대기 매개변수가 없으므로 명령은 폴링 방식으로 동작합니다. 첫 페이지 이후의 각 확인에서는 이미 출력한 가장 최신 시간 이후(같은 시간 포함)의 기록을 요청하고, 이미 출력한 기록은 건너뛰므로 같은 기록이 두 번 표시되지 않습니다. 확인 한 번마다 결과 페이지를 따라가며 새 기록을 모두 가져오며, 확인당 최대 2,000개까지입니다. 플랜의 보존 기간보다 오래된 기록은 반환되지 않습니다.

## 종료 코드

| 코드 | 의미 |
|---|---|
| `0` | Ctrl-C로 중지했습니다. |
| `1` | 서버 오류 또는 네트워크 장애입니다. |
| `2` | 사용 오류입니다. 잘못된 필터, 제한, 간격 또는 출력 형식입니다. 요청은 전송되지 않았습니다. |
| `3` | 자격 증명이 없거나 서버가 `401` 또는 `403`으로 응답했습니다. |
| `4` | 플랜에 이 기능이 포함되어 있지 않습니다(`403`과 `plan_feature_unavailable`). |
