Filtragem em nível de log
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. Você pode 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, 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
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.
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 |
INFO | 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 | Uso |
---|---|
DEBUG (mais detalhes) | Informações detalhadas para depuração do sistema |
INFO | 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.
Configurar a filtragem em nível de log
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). Você também pode configurar o nível de log de uma função usando os comandos CreateFunction e UpdateFunctionConfiguration da API do Lambda, o recurso AWS::Serverless::Function do AWS Serverless Application Model (AWS SAM) e o recurso AWS::Lambda::Function do AWS 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)
Abra a página Funções
do console do Lambda. -
Escolha uma função.
-
Na página de configuração da função, escolha Ferramentas de monitoramento e operações.
-
No painel Configuração de registro em log, escolha Editar.
-
Em Conteúdo do log, em Formato do log, certifique-se de que a opção JSON esteja selecionada.
-
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.
-
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
. Use --logging-config
para definirSystemLogLevel
como um destes:DEBUG
,INFO
ouWARN
. DefinaApplicationLogLevel
comoDEBUG
,INFO
,WARN
,ERROR
ouFATAL
.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 chavesSystemLogLevel
eApplicationLogLevel
no comando create-function. Defina SystemLogLevel
comoDEBUG
,INFO
ouWARN
. DefinaApplicationLogLevel
comoDEBUG
,INFO
,WARN
,ERROR
ouFATAL
.aws lambda create-function \ --function-name myFunction \ --runtime nodejs22.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
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.
Nome do evento | Condição | Nível de log atribuído |
---|---|---|
initStart | runtimeVersion está definida | INFO |
initStart | runtimeVersion não está definida | DEBUG |
initRuntimeDone | status=success | DEBUG |
initRuntimeDone | status!=success | WARN |
initReport | initializationType!=on-demand | INFO |
initReport | initializationType=on-demand | DEBUG |
initReport | status!=success | WARN |
restoreStart | runtimeVersion está definida | INFO |
restoreStart | runtimeVersion não está definida | DEBUG |
restoreRuntimeDone | status=success | DEBUG |
restoreRuntimeDone | status!=success | WARN |
restoreReport | status=success | INFO |
restoreReport | status!=success | WARN |
rápido | - | INFO |
runtimeDone | status=success | DEBUG |
runtimeDone | status!=success | WARN |
relatório | status=success | INFO |
relatório | status!=success | WARN |
extensão | state=success | INFO |
extensão | state!=success | WARN |
logSubscription | - | INFO |
telemetrySubscription | - | INFO |
logsDropped | - | WARN |
nota
Acessar dados de telemetria em tempo real para extensões usando a API Telemetria 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
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
. Você pode usar essas variáveis para integrar os controles avançados de registro em log do Lambda em um runtime personalizado.
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.