

# Filtragem em nível de log
<a name="monitoring-cloudwatchlogs-log-level"></a>

O Lambda pode filtrar os logs da função para que somente logs de um determinado nível de detalhes, ou de um nível inferior, sejam enviados para o CloudWatch Logs. É possível configurar a filtragem em nível de logs separadamente para os logs do sistema da função (logs gerados pelo Lambda) e os logs de aplicações (logs gerados pelo código da função).

Para [Runtimes e métodos de registro em log compatíveis](monitoring-cloudwatchlogs-logformat.md#monitoring-cloudwatchlogs-logformat-supported), você não precisa fazer nenhuma alteração no código da função do Lambda para filtrar logs de aplicações da função.

Para todos os outros runtimes e métodos de registro em log, o código da função deve gerar eventos de log para `stdout` ou `stderr` como objetos formatados em JSON que contenham um par de valores-chave com a chave `"level"`. Por exemplo, o Lambda interpreta a saída a seguir `stdout` como um log de nível DEBUG.

```
print('{"level": "debug", "msg": "my debug log", "timestamp": "2024-11-02T16:51:31.587199Z"}')
```

Se o campo de valor `"level"` for inválido ou estiver ausente, o Lambda atribuirá à saída do log o nível INFO. Para que o Lambda use o campo de carimbo de data/hora, você precisa especificar a hora em um formato [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) válido de carimbo de data/hora. Se você não fornecer um carimbo de data/hora válido, o Lambda atribuirá ao log o nível INFO e adicionará um carimbo de data/hora.

Ao denominar a chave de carimbo de data/hora, siga as convenções do runtime que estiver usando. O Lambda é compatível com as convenções de nomenclatura mais comuns usadas pelos runtimes gerenciados.

**nota**  
Para usar a filtragem em nível de log, sua função precisar estar configurada para usar logs em formato JSON. O formato de log padrão para todos os runtimes gerenciados pelo Lambda atualmente é texto simples. Para saber como configurar logs em formato JSON para a função, consulte [Configurar o formato de log da função](monitoring-cloudwatchlogs-logformat.md#monitoring-cloudwatchlogs-set-format).

Para logs de aplicações (logs gerados pelo código da função), você pode escolher entre os níveis de log a seguir.


| Nível de log | Uso padrão | 
| --- | --- | 
| TRACE (mais detalhes) | As informações mais detalhadas usadas para rastrear o caminho da execução do código | 
| DEBUG | Informações detalhadas para depuração do sistema | 
| INFORMAÇÕES | Mensagens que registram a operação normal da função | 
| WARN | Mensagens sobre possíveis erros que podem levar a um comportamento inesperado se não forem corrigidos | 
| ERRO | Mensagens sobre problemas que impedem que o código funcione conforme o esperado | 
| FATAL (menos detalhes) | Mensagens sobre erros graves que fazem a aplicação parar de funcionar | 

Quando você seleciona um nível de log, o Lambda envia logs desse nível, e de níveis inferiores, para o CloudWatch Logs. Por exemplo, se você definir o nível de log de aplicações de uma função como WARN, o Lambda não enviará saídas de log nos níveis INFO e DEBUG. O nível padrão de logs de aplicações para a filtragem de logs é INFO.

Quando o Lambda filtra os logs de aplicações da função, as mensagens de log sem nível receberão o nível INFO.

Para logs do sistema (logs gerados pelo serviço Lambda), você pode escolher entre os níveis de log a seguir.


| Nível de log | Usage | 
| --- | --- | 
| DEBUG (mais detalhes) | Informações detalhadas para depuração do sistema | 
| INFORMAÇÕES | Mensagens que registram a operação normal da função | 
| WARN (menos detalhes) | Mensagens sobre possíveis erros que podem levar a um comportamento inesperado se não forem corrigidos | 

Quando você seleciona um nível de log, o Lambda envia logs desse nível, e de níveis inferiores. Por exemplo, se você definir o nível de log do sistema de uma função como INFO, o Lambda não enviará saídas de log no nível DEBUG.

Por padrão, o Lambda define o nível de log do sistema como INFO. Com essa configuração, o Lambda envia automaticamente as mensagens de log `"start"` e `"report"` para o CloudWatch. Para receber logs do sistema mais ou menos detalhados, altere o nível de log para DEBUG ou WARN. Para ver uma lista dos níveis de log para os quais o Lambda mapeia diferentes eventos de log do sistema, consulte [Mapeamento de eventos no nível de log do sistema](#monitoring-cloudwatchlogs-log-level-mapping).

## Configurar a filtragem em nível de log
<a name="monitoring-cloudwatchlogs-log-level-setting"></a>

Para configurar a filtragem em nível de log de aplicações e do sistema para a função, você pode usar o console do Lambda ou a AWS Command Line Interface (AWS CLI). Também é possível configurar o nível de log de uma função usando os comandos [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html) e [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html) da API do Lambda, o recurso [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html) do AWS Serverless Application Model (AWS SAM) e o recurso [AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html) do CloudFormation.

Observe que, se você definir o nível de log da função no código, essa definição terá precedência sobre qualquer outra configuração de nível de log que você definir. Por exemplo, se você usar o método `logging` `setLevel()` do Python para definir o nível de registro em log da sua função como INFO, essa definição terá precedência sobre uma configuração de WARN que você definir usando o console do Lambda.

**Configurar o nível de log de aplicações ou do sistema de uma função existente (console)**

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda.

1. Escolha uma função.

1. Na página de configuração da função, escolha **Ferramentas de monitoramento e operações**.

1. No painel **Configuração de registro em log**, escolha **Editar**.

1. Em **Conteúdo do log**, em **Formato do log**, certifique-se de que a opção **JSON** esteja selecionada.

1. Use os botões de opção para selecionar o **Nível de log da aplicação** e o **Nível de log do sistema** desejados para a função.

1. Escolha **Salvar**.

**Configurar o nível de logs de aplicações ou do sistema de uma função existente (AWS CLI)**
+ Para alterar o nível de logs de aplicações ou do sistema de uma função existente, use o comando [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html). Use `--logging-config` para definir `SystemLogLevel` como um destes: `DEBUG`, `INFO` ou `WARN`. Defina `ApplicationLogLevel` como `DEBUG`, `INFO`, `WARN`, `ERROR` ou `FATAL`. 

  ```
  aws lambda update-function-configuration \
    --function-name myFunction \
    --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
  ```

**Configurar a filtragem em nível de log ao criar uma função**
+ Para configurar a filtragem em nível de log ao criar uma função, use `--logging-config` para definir as chaves `SystemLogLevel` e `ApplicationLogLevel` no comando [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html). Defina `SystemLogLevel` como `DEBUG`, `INFO` ou `WARN`. Defina `ApplicationLogLevel` como `DEBUG`, `INFO`, `WARN`, `ERROR` ou `FATAL`.

  ```
  aws lambda create-function \
    --function-name myFunction \
    --runtime nodejs24.x \
    --handler index.handler \
    --zip-file fileb://function.zip \
    --role arn:aws:iam::123456789012:role/LambdaRole \ 
    --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
  ```

## Mapeamento de eventos no nível de log do sistema
<a name="monitoring-cloudwatchlogs-log-level-mapping"></a>

Para eventos de log no nível do sistema gerados pelo Lambda, a tabela a seguir define o nível de log atribuído a cada evento. Para saber mais sobre os eventos listados na tabela, consulte [Referência de esquema para `Event` da API de Telemetria do Lambda](telemetry-schema-reference.md).


| Nome do evento | Condição | Nível de log atribuído | 
| --- | --- | --- | 
| initStart | runtimeVersion está definida | INFORMAÇÕES | 
| initStart | runtimeVersion não está definida | DEBUG | 
| initRuntimeDone | status=success | DEBUG | 
| initRuntimeDone | status\$1=success | WARN | 
| initReport | initializationType\$1=on-demand | INFORMAÇÕES | 
| initReport | initializationType=on-demand | DEBUG | 
| initReport | status\$1=success | WARN | 
| restoreStart | runtimeVersion está definida | INFORMAÇÕES | 
| restoreStart | runtimeVersion não está definida | DEBUG | 
| restoreRuntimeDone | status=success | DEBUG | 
| restoreRuntimeDone | status\$1=success | WARN | 
| restoreReport | status=success | INFORMAÇÕES | 
| restoreReport | status\$1=success | WARN | 
| rápido | - | INFORMAÇÕES | 
| runtimeDone | status=success | DEBUG | 
| runtimeDone | status\$1=success | WARN | 
| relatório | status=success | INFORMAÇÕES | 
| relatório | status\$1=success | WARN | 
| extensão | state=success | INFORMAÇÕES | 
| extensão | state\$1=success | WARN | 
| logSubscription | - | INFORMAÇÕES | 
| telemetrySubscription | - | INFORMAÇÕES | 
| logsDropped | - | WARN | 

**nota**  
[Acessar dados de telemetria em tempo real para extensões usando a API Telemetria](telemetry-api.md) sempre emite o conjunto completo de eventos da plataforma. Configurar o nível dos logs do sistema enviados pelo Lambda para o CloudWatch não afeta o comportamento da API de Telemetria do Lambda.

## Filtragem em nível de log de aplicações com runtimes personalizados
<a name="monitoring-cloudwatchlogs-log-level-custom"></a>

Quando você configura a filtragem em nível de log de aplicações para a função, o Lambda define o nível de log de aplicações em segundo plano no runtime usando a variável de ambiente `AWS_LAMBDA_LOG_LEVEL`. O Lambda também define o formato de log da função usando a variável de ambiente `AWS_LAMBDA_LOG_FORMAT`. É possível usar essas variáveis para integrar os controles avançados de registro em log do Lambda em um [runtime personalizado](runtimes-custom.md).

Para definir as configurações de registro em log de uma função usando um runtime personalizado com o console, a AWS CLI e as APIs do Lambda, configure o runtime personalizado para verificar o valor dessas variáveis de ambiente. Depois disso, você pode configurar os loggers do runtime de acordo com o formato e os níveis de log selecionados.