[Документация Yandex Cloud](../../index.md) > [Yandex API Gateway](../index.md) > [Пошаговые инструкции](index.md) > Управление API-шлюзом > Управлять логами > Записать логи

# Записать логи в журнал выполнения в API Gateway

{% note info %}

Логирование тарифицируется. Подробнее в [документации Yandex Cloud Logging](../../logging/pricing.md).

{% endnote %}

{% list tabs group=instructions %}

- Консоль управления {#console}
    
    1. В [консоли управления](https://kz.console.yandex.cloud) перейдите в [каталог](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором находится API-шлюз.
    1. Перейдите в сервис **API Gateway**.
    1. Выберите API-шлюз, для которого хотите настроить логирование.
    1. В верхней части страницы нажмите ![image](../../_assets/console-icons/pencil.svg) **Редактировать**.
    1. В блоке **Логирование**:

        1. Включите опцию **Запись логов**.
        1. В поле **Назначение** выберите:
                  
           * `Каталог` — чтобы записывать логи в [лог-группу](../../logging/concepts/log-group.md) по умолчанию для каталога, в котором находится API-шлюз.
           * `Лог-группа` — чтобы записывать логи в пользовательскую лог-группу.
             
             Выберите лог-группу, в которую будут записываться логи, или [создайте](../../logging/operations/create-group.md) новую.
        
        1. (Опционально) Выберите минимальный уровень логирования.

    1. Нажмите кнопку **Сохранить**. 
    
    Если минимальный уровень логирования задан, в журнал выполнения записываются логи указанного уровня и выше. Если минимальный уровень логирования не задан, в журнал выполнения записываются все логи API-шлюза.

- CLI {#cli}

    Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../cli/quickstart.md#install).

    По умолчанию используется каталог, указанный при [создании](../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

    ## Назначение логирования {#destination}

    Если в параметрах API-шлюза не указана пользовательская [лог-группа](../../logging/concepts/log-group.md) или логирование не отключено, API-шлюз автоматически пишет все логи в лог-группу по умолчанию для [каталога](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором он находится.

    Чтобы записывать логи в лог-группу по умолчанию для другого каталога, укажите идентификатор этого каталога в параметре `--log-folder-id` при [создании](api-gw-create.md) или [изменении](api-gw-update.md) API-шлюза. [Аккаунту](../../iam/concepts/users/accounts.md), от имени которого выполняется команда, на этот каталог должна быть назначена [роль](../../logging/security/index.md#logging-editor) `logging.editor` или выше.

    Чтобы записывать логи в пользовательскую лог-группу, укажите идентификатор этой лог-группы в параметре `--log-group-id` при создании или изменении API-шлюза. Лог-группа может находиться в другом каталоге. Аккаунту, от имени которого выполняется команда, на этот каталог должна быть назначена роль `logging.editor` или выше.

    ## Минимальный уровень логирования {#log-level}

    Чтобы задать минимальный уровень логирования, укажите его в параметре `--min-log-level` при создании или изменении API-шлюза. 

    Если минимальный уровень логирования задан, в журнал выполнения записываются логи указанного уровня и выше. Если минимальный уровень логирования не задан, в журнал выполнения записываются все логи API-шлюза.

    ## Отключение логирования {#disabled}

    Чтобы отключить логирование, при создании или изменении API-шлюза укажите параметр `--no-logging`.

    ## Пример команды {#example}

    Чтобы записывать логи в пользовательскую лог-группу, выполните команду:

    ```bash
    yc serverless api-gateway update <имя_или_идентификатор_API-шлюза> \
      --log-group-id <идентификатор_лог-группы> \
      --min-log-level <минимальный_уровень_логирования>
    ```

    Где:
    * `--log-group-id` — идентификатор лог-группы, в которую будут записываться логи.
    * `--min-log-level` — минимальный уровень логирования. Доступные уровни логирования: `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR` и `FATAL`. Необязательный параметр.

    Результат:

    ```text
    id: d5dr8k465604********
    folder_id: b1g3f9i71bpm********
    created_at: "2024-01-26T09:18:55.985Z"
    name: example_gateway
    status: ACTIVE
    domain: d5dm1lba80md********.i9******.apigw.yandexcloud.net
    log_group_id: ckgsh1kdbvj1********
    connectivity: {}
    log_options:
      log_group_id: e23u2vn449av********
      min_level: ERROR
    ```

- Terraform {#tf}
    
    [Terraform](https://www.terraform.io/) позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
    
    Terraform распространяется под лицензией [Business Source License](https://github.com/hashicorp/terraform/blob/main/LICENSE), а [провайдер Yandex Cloud для Terraform](https://github.com/yandex-cloud/terraform-provider-yandex) — под лицензией [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/).
    
    Подробная информация о ресурсах провайдера в документации на сайте [Terraform](https://www.terraform.io/docs/providers/yandex/index.html) или в [зеркале](../../terraform/index.md).
    
    Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
    
    
    Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../terraform/authentication.md) соответствующим способом.

    ## Назначение логирования {#destination}

    Если в параметрах API-шлюза не указана пользовательская [лог-группа](../../logging/concepts/log-group.md) или логирование не отключено, API-шлюз автоматически пишет все логи в лог-группу по умолчанию для [каталога](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором он находится.

    Чтобы записывать логи в лог-группу по умолчанию для другого каталога, укажите идентификатор этого каталога в блоке `log_options` в параметре `folder_id` при [создании](api-gw-create.md) или [изменении](api-gw-update.md) API-шлюза. [Аккаунту](../../iam/concepts/users/accounts.md), от имени которого выполняется команда, на этот каталог должна быть назначена [роль](../../logging/security/index.md#logging-editor) `logging.editor` или выше.

    Чтобы записывать логи в пользовательскую лог-группу, укажите идентификатор этой лог-группы в блоке `log_options` в параметре `log_group_id` при создании или изменении API-шлюза. Лог-группа может находиться в другом каталоге. Аккаунту, от имени которого выполняется команда, на этот каталог должна быть назначена роль `logging.editor` или выше.

    ## Минимальный уровень логирования {#log-level}

    Чтобы задать минимальный уровень логирования, укажите его в блоке `log_options` в параметре `min_level` при создании или изменении API-шлюза. 

    Если минимальный уровень логирования задан, в журнал выполнения записываются логи указанного уровня и выше. Если минимальный уровень логирования не задан, в журнал выполнения записываются все логи API-шлюза.

    ## Отключение логирования {#disabled}

    Чтобы отключить логирование, при создании или изменении API-шлюза в блоке `log_options` укажите параметр `disabled` со значением `true`.

    ## Пример {#example}

    Чтобы записывать логи в пользовательскую лог-группу:

    1. Откройте файл конфигурации Terraform и добавьте к описанию ресурса `yandex_api_gateway` блок `log_options`:

        Пример структуры конфигурационного файла:
        
        ```hcl
        resource "yandex_api_gateway" "<имя_API-шлюза>" {
          ...
          log_options {
            folder_id = "<идентификатор_каталога>"
            min_level = "<минимальный_уровень_логирования>"
          }
          ...
        }
        ```

        Где:
        * `folder_id` — идентификатор каталога.
        * `min_level` — минимальный уровень логирования. Доступные уровни логирования: `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR` и `FATAL`. Необязательный параметр.

        Подробнее о параметрах ресурса `yandex_api_gateway` в Terraform в [документации провайдера](../../terraform/resources/api_gateway.md).
    
    1. Проверьте конфигурацию командой:

        ```bash
        terraform validate
        ```

        Если конфигурация является корректной, появится сообщение:

        ```text
        Success! The configuration is valid.
        ```

    1. Выполните команду:

        ```bash
        terraform plan
        ```

        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
    
    1. Примените изменения конфигурации:

        ```bash
        terraform apply
        ```

    1. Подтвердите изменения: введите в терминал слово `yes` и нажмите **Enter**.

- API {#api}

    Чтобы записывать логи в журнал выполнения в Yandex API Gateway воспользуйтесь методом REST API [update](../apigateway/api-ref/ApiGateway/update.md) для ресурса [ApiGateway](../apigateway/api-ref/ApiGateway/index.md) или вызовом gRPC API [ApiGatewayService/Update](../apigateway/api-ref/grpc/ApiGateway/update.md).

{% endlist %}