---
name: azion-consultar-logs-de-console-de-uma-function
description: >-
  Leia o que uma function escreveu com console.log no dataset functionConsoleEvents, no Azion Console e com uma consulta GraphQL.
---

# Consultar logs de console de uma function

Você pode ler as linhas que uma function escreveu com `console.log` pelo Azion Console ou com uma consulta GraphQL. [Real-Time Events](/pt-br/documentacao/plataforma/real-time-events/) as guarda na fonte de dados Functions Console. A API GraphQL entrega os mesmos registros como o dataset `functionConsoleEvents`, antes chamado de `cellsConsoleEvents`.

Uma requisição deixa várias linhas, em vez de um único registro. A variável **ID**, que a API GraphQL nomeia `id`, é o identificador da requisição e agrupa todas as linhas de uma única requisição. Um resultado com cinco linhas para uma requisição é o formato esperado.

Azion Runtime escreve linhas próprias junto com as que seu código escreve. **Line Source** separa as duas: `CONSOLE` marca uma linha escrita com `console.log` e `RUNTIME` marca uma linha que Azion Runtime produziu, como uma exceção.

---

## Pré-requisitos

- Uma function que já executou pelo menos uma vez. Criar uma function não a executa, e uma function que nunca executa não escreve nenhuma linha.
- Acesso ao Azion Console, para o procedimento no Console.
- Um personal token, para a consulta GraphQL. Para criar um, consulte [Personal Tokens](/pt-br/documentacao/fundamentos/personal-tokens/).

---

## Leia as linhas que uma function escreveu

As duas interfaces leem os mesmos registros, e as duas delimitam a busca por um período primeiro. Os nomes que elas recebem são diferentes. **Filter by** recebe a variável em minúsculas, com underscores, e a API GraphQL recebe o campo em camelCase, portanto a variável **Function ID** se escreve `function_id` em uma e `functionId` na outra.

O período que uma busca pode pedir e as linhas que uma consulta retorna são ambos limitados. Para cada limite, consulte [Limites](/pt-br/documentacao/plataforma/real-time-events/limites/).

**Console**

Para ler as linhas pelo Azion Console:

1. **Abra Real-Time Events**

   Acesse [Azion Console](https://console.azion.com) > **Products menu** > **Observe** > **Real-Time Events**.

2. **Selecione a fonte de dados**

   Em **Data Sources**, selecione *Functions Console*.

3. **Defina o período**

   Em **Time Filter**, selecione um período que cubra a execução que você quer ler.

4. **Reduza o resultado a uma function**

   Em **Filter by**, informe o identificador da function:

   ```text
   function_id='<your-function-id>'
   ```

5. **Selecione Refresh**

A tabela carrega as linhas que aquela function escreveu dentro do período, uma linha da tabela por linha de log.

**Filter by** lê SQL, portanto `key='value'` corresponde a um valor exato. Selecione uma linha para abrir **More details**, que carrega todas as variáveis daquele registro, incluindo **Line**, a mensagem em si. Para todas as variáveis que a fonte de dados carrega, consulte [Fontes de dados](/pt-br/documentacao/plataforma/real-time-events/fontes-de-dados/).

**API**

A API GraphQL entrega as mesmas linhas como o dataset `functionConsoleEvents`. Envie a consulta para `https://api.azion.com/v4/events/graphql` com um cabeçalho `Authorization: Token [TOKEN VALUE]`. O mesmo endereço serve o GraphiQL Playground em um navegador, onde a consulta roda sem uma requisição sua. Para o caminho pelo terminal, consulte [Primeiros passos da API GraphQL](/pt-br/documentacao/devtools/graphql/primeiros-passos/).

Esta consulta retorna 10 linhas de um intervalo de tempo, as mais antigas primeiro:

```graphql
query ConsoleLog {
  functionConsoleEvents(
    limit: 10,
    filter: {
      tsRange: {begin: "2026-09-21T11:30:00", end: "2026-09-21T13:00:00"}
    }
    orderBy: [ts_ASC]
  )
  {
    ts
    solutionId
    configurationId
    functionId
    id
    lineSource
    level
    line
  }
}
```

A resposta carrega as linhas correspondentes em JSON:

```json
{
    "data": {
        "functionConsoleEvents": [
            {
                "ts": "2026-09-21T12:09:54Z",
                "solutionId": "1234567890",
                "configurationId": "1234567891",
                "functionId": "9483",
                "id": "fa498cd9-cbep-4382-8bbb-32b029fe7411",
                "lineSource": "RUNTIME",
                "level": "ERROR",
                "line": "TypeError: Object not found"
            },
            {
                "ts": "2026-09-21T12:09:54Z",
                "solutionId": "1234567890",
                "configurationId": "1234567891",
                "functionId": "9483",
                "id": "fa498cd9-cbep-4382-8bbb-32b029fe7411",
                "lineSource": "RUNTIME",
                "level": "ERROR",
                "line": "TypeError: Object not found"
            },
            {
                "ts": "2026-09-21T12:09:54Z",
                "solutionId": "1234567890",
                "configurationId": "1234567891",
                "functionId": "9483",
                "id": "fa498cd9-cbep-4382-8bbb-32b029fe7411",
                "lineSource": "RUNTIME",
                "level": "ERROR",
                "line": "    at async mainFetch (ext:cells_fetch/26_fetch.js:266:12)"
            }
        ]
    }
}
```

As três linhas carregam um mesmo `id`, porque uma única requisição produziu todas elas. Cada uma lê `RUNTIME` em `lineSource` e `ERROR` em `level`, portanto quem as escreveu foi Azion Runtime. Uma linha escrita com `console.log` lê `CONSOLE` e `LOG` nesses mesmos dois campos.

`functionId` identifica a function e `configurationId` identifica o workload em que a requisição chegou. Para retornar apenas as linhas cuja mensagem corresponde a um padrão, acrescente `lineLike` ao filtro. O caractere `%` representa qualquer sequência de caracteres, portanto `lineLike: "%TypeError%"` corresponde a todas as linhas que contêm `TypeError`. Para todos os campos que o dataset carrega, consulte [Campos da API GraphQL do Real-Time Events](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-events/#functionconsoleevents-anteriormente-cellsconsoleevents-azion-runtime).

---

## Próximos passos

- [Ler um registro de evento](/pt-br/documentacao/guias/plataforma/observabilidade/entender-logs.md): Abra um registro no Azion Console e leia todas as variáveis que o evento escreveu.
- [Filtrar eventos](/pt-br/documentacao/guias/plataforma/observabilidade/adicionar-filtros-events.md): A sintaxe completa do Filter by, com os wildcards que ampliam uma correspondência.
- [Consultar eventos de requisição HTTP](/pt-br/documentacao/guias/plataforma/observabilidade/consultar-workload-events.md): Leia os registros de uma requisição a um workload no dataset workloadEvents.
- [Campos do Real-Time Events](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-events.md): Todos os campos que functionConsoleEvents carrega, e os campos de todos os outros datasets.
