Todos os produtos
Search
Central de documentação

Simple Log Service:Node.js SDK quick start

Última atualização: Jul 03, 2026

Este tópico descreve como usar o SDK do Simple Log Service (SLS) para Node.js para executar operações comuns, como criar projetos, logstores, gravar logs e consultar dados.

Pré-requisitos

Importante

Este exemplo usa o endpoint público da região China (Hangzhou): https://cn-hangzhou.log.aliyuncs.com. Se você acessar o SLS de outro serviço da Alibaba Cloud na mesma região do projeto, use o endpoint interno: https://cn-hangzhou-intranet.log.aliyuncs.com. Para obter mais informações sobre as regiões e os endpoints compatíveis com o SLS, consulte Endpoint.

Parâmetros

createProject

Parâmetros da solicitação

Parameter

Type

Required

Description

projectName

String

Yes

Nome do projeto. O nome deve ser globalmente único e não pode ser alterado após a criação.

O nome deve atender aos seguintes requisitos:

  • Pode conter letras minúsculas, dígitos e hifens (-).

  • Deve começar com uma letra minúscula e terminar com uma letra minúscula ou dígito.

  • Deve ter entre 3 e 63 caracteres.

description

String

Yes

Descrição do projeto. A descrição pode ter até 64 caracteres e não pode conter colchetes angulares (<>), aspas simples ('), barras invertidas (\) ou aspas duplas (").

resourceGroupId

String

No

ID do grupo de recursos. Se você não especificar esse parâmetro, o sistema usará o grupo de recursos padrão. Para mais informações, consulte Crie um grupo de recursos.

dataRedundancyType

String

No

O tipo de redundância de armazenamento padrão é o armazenamento localmente redundante. Algumas regiões oferecem suporte ao armazenamento localmente redundante e ao armazenamento redundante por zona. Não é possível alterar o tipo de redundância após a criação do projeto. Para mais informações, consulte Storage redundancy.

  • LRS: armazenamento localmente redundante

  • ZRS: armazenamento redundante por zona

Parâmetros de resposta

Para obter mais informações sobre os parâmetros de resposta, consulte CreateProject.

createLogStore

Parâmetros da solicitação

Parameter

Type

Required

Description

projectName

String

Yes

Nome do projeto. No Simple Log Service, o projeto isola recursos de diferentes usuários e controla o acesso a recursos específicos. Consulte Gerencie projetos.

logstoreName

String

Yes

Nome do logstore. O nome deve ser globalmente único e não pode ser alterado após a criação do projeto.

O nome deve atender aos seguintes requisitos:

  • Pode conter letras minúsculas, dígitos, hifens (-) e sublinhados (_).

  • Deve começar com uma letra minúscula e terminar com uma letra minúscula ou dígito.

  • Deve ter entre 3 e 63 caracteres.

ttl

int

No

Data Retention Period, em dias. Valores válidos: 1 a 3650. Se definido como 3650, os dados são armazenados permanentemente. Após o término do período de retenção especificado, os dados de log são excluídos.

O período de retenção de dados (ttl) corresponde à soma dos seguintes períodos:

  • Período de hot storage (hotTtl)

  • Período de IA storage (infrequentAccessTtl)

  • Período de archive storage

shardCount

int

No

Número de shards. Valores válidos: 1 a 10. Para mais informações, consulte Shard ranges.

enableTracking

bool

No

Define se o recurso WebTracking deve ser ativado.

  • True: Ativa o recurso WebTracking, permitindo que o logstore aceite solicitações de gravação anônimas da internet sem autenticação válida. Isso pode resultar em dados inconsistentes.

  • False (padrão): Desativa o WebTracking.

Nota

O WebTracking permite coletar rapidamente informações de acesso de diversos navegadores, além de aplicativos iOS e Android. Para mais informações, consulte Use Web Tracking to collect logs.

appendMeta

bool

No

Define se o recurso Record Public IP Address deve ser ativado.

  • true: Acrescenta o endereço IP do cliente. Com esse recurso ativado, o SLS adiciona automaticamente as seguintes informações ao campo tag dos logs.

    • __client_ip__: Endereço IP público do cliente.

    • __receive_time__: Horário de chegada do log, no formato de timestamp UNIX.

  • false (padrão): Não acrescenta o endereço IP do cliente.

autoSplit

bool

No

Define se a Automatic Shard Splitting deve ser ativada.

maxSplitShard

int

No

Maximum Split Count: Ao ativar a Auto Shard Splitting, um shard pode ser dividido automaticamente em até 256 partições. Este parâmetro é obrigatório quando auto_split estiver definido como True.

Importante

Este parâmetro é obrigatório se auto_split for definido como true.

encryptConf

dict

No

Estrutura de dados para configurações de criptografia. Inclui os parâmetros enable, encrypt_type e user_cmk_info. Para mais informações, consulte EncryptConf e Data encryption.

telemetryType

String

No

Tipo de dados observáveis. Valores válidos:

  • None: Dados de log. Este é o valor padrão.

  • Metrics: Métrica. Neste caso, apenas os seguintes parâmetros têm efeito:

    • logstoreName

    • ttl

    • shardCount

    • autoSplit

    • maxSplitShard

    • appendMeta

Importante

Não é possível modificar este parâmetro após sua criação.

hotTtl

int

No

Período de armazenamento de dados na camada de hot storage de um logstore, em dias. O valor mínimo é 7. O valor não pode exceder o valor de ttl. Um valor de -1 indica que todos os dados dentro do período de retenção (ttl) são armazenados como hot storage.

Após o término do período de hot storage, os dados são convertidos para IA storage. Para mais informações sobre os conceitos e o processo de conversão entre hot storage, IA storage e archive storage, consulte Gerencie o armazenamento em camadas inteligente.

  • Dados quentes devem ser armazenados por pelo menos 7 dias antes de serem convertidos para IA storage. Dados de IA storage devem permanecer armazenados por pelo menos 30 dias antes da conversão para archive storage.

  • Dados quentes devem ser armazenados por pelo menos 30 dias antes de serem convertidos para archive storage.

mode

String

No

O Simple Log Service oferece dois tipos de logstores: Standard e Query.

  • standard (padrão): Suporta análise de dados completa. Ideal para cenários como monitoramento em tempo real, análise interativa e construção de sistemas completos de observabilidade.

  • query: Suporta consultas de alto desempenho. O custo de tráfego de indexação é cerca de metade do tipo Standard. No entanto, este tipo não suporta instruções SELECT, sendo adequado para cenários com grandes volumes de dados, longos períodos de armazenamento (semanal, mensal ou superior) ou sem necessidade de análise de logs.

Para mais informações, consulte Logstore types.

infrequentAccessTtl

int

No

Período de armazenamento de dados na camada de IA storage de um logstore, em dias. Os dados de IA storage devem permanecer armazenados por pelo menos 30 dias antes de serem convertidos para archive storage. Para mais informações, consulte Gerencie o armazenamento em camadas inteligente.

Parâmetros de resposta

Para obter mais informações sobre os parâmetros de resposta, consulte CreateLogStore.

createIndex

Parâmetros da solicitação

Parameter

Type

Required

Description

projectName

String

Yes

Nome do projeto. No Simple Log Service, o projeto isola recursos de diferentes usuários e controla o acesso a recursos específicos. Consulte Gerencie projetos.

logstoreName

String

Yes

Nome do logstore. No Simple Log Service, o logstore coleta, armazena e consulta logs. Consulte Gerencie Logstores.

index

index

Yes

Configuração do índice.

Parâmetros de resposta

Para obter mais informações sobre os parâmetros de resposta, consulte CreateIndex.

getLogs

Parâmetros da solicitação

Parameter

Type

Required

Description

projectName

String

Yes

Nome do projeto. No Simple Log Service, o projeto isola recursos de diferentes usuários e controla o acesso a recursos específicos. Consulte Gerencie projetos.

logstoreName

String

Yes

Nome do logstore. No Simple Log Service, o logstore coleta, armazena e consulta logs. Consulte Gerencie Logstores.

from

int

Yes

Início do intervalo de tempo da consulta. O valor é um timestamp UNIX.

Nota
  • Momento em que o logstore recebe os logs. O campo __tag__:__receive_time__ é um campo reservado do Simple Log Service.

  • Intervalo definido pelos horários de início e fim. Trata-se de um intervalo fechado à esquerda e aberto à direita, incluindo o horário inicial, mas excluindo o final. Se ambos forem iguais, o intervalo é inválido e um erro é retornado.

  • Para garantir a consulta completa dos dados, especifique um intervalo de tempo com precisão de minutos. Caso também seja definido um intervalo na instrução analítica, ele será usado tanto para consulta quanto para análise.

  • Se precisar especificar um intervalo de tempo com precisão de segundos, utilize funções de data e hora para converter o formato. Exemplos:

    • | SELECT FROM log WHERE from_unixtime(__time__) > from_unixtime(1664186624) AND from_unixtime(__time__) < now()

    • | SELECT FROM log WHERE __time__ > to_unixtime(date_parse('2022-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())

to

int

Yes

Fim do intervalo de tempo da consulta. O valor é um timestamp UNIX.

Nota
  • Momento em que o logstore recebe os logs. O campo __tag__:__receive_time__ é um campo reservado do Simple Log Service.

  • Intervalo definido pelos horários de início e fim. Trata-se de um intervalo fechado à esquerda e aberto à direita, incluindo o horário inicial, mas excluindo o final. Se ambos forem iguais, o intervalo é inválido e um erro é retornado.

  • Para garantir a consulta completa dos dados, especifique um intervalo de tempo com precisão de minutos. Caso também seja definido um intervalo na instrução analítica, ele será usado tanto para consulta quanto para análise.

  • Se precisar especificar um intervalo de tempo com precisão de segundos, utilize funções de data e hora para converter o formato. Exemplos:

    • | SELECT FROM log WHERE from_unixtime(__time__) > from_unixtime(1664186624) AND from_unixtime(__time__) < now()

    • | SELECT FROM log WHERE __time__ > to_unixtime(date_parse('2022-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())

topic

String

No

Tópico dos logs. O valor padrão é uma string vazia. Para mais informações, consulte Log topics.

query

String

No

Instrução de pesquisa ou analítica. Para mais informações, consulte Query and analysis overview. Para utilizar o Dedicated SQL, adicione set session parallel_sql=true; à instrução analítica no parâmetro query. Exemplo: | set session parallel_sql=true; select count() as pv. Para informações sobre problemas comuns de consulta e análise, consulte Common errors that occur when you query and analyze logs.

Nota

Se o parâmetro query contiver uma instrução analítica (SQL), os parâmetros line e offset desta operação de API tornar-se-ão inválidos. Defina esses parâmetros como 0 e utilize a cláusula LIMIT na instrução SQL para paginação. Para mais informações, consulte Display query and analysis results by page.

line

int

No

Este parâmetro é válido apenas quando o parâmetro query for uma instrução de pesquisa. Especifica o número máximo de logs a serem retornados. Valor mínimo: 0. Valor máximo: 100. Valor padrão: 100.

offset

int

No

Este parâmetro é válido apenas quando o parâmetro query for uma instrução de pesquisa. Especifica a linha inicial da consulta. O valor padrão é 0.

reverse

bool

No

Define se os logs devem ser retornados em ordem decrescente de timestamps. A precisão é de minutos.

  • true: Retorna os logs em ordem decrescente de timestamps.

  • false (padrão): Retorna os logs em ordem crescente de timestamps.

Importante
  • Se o parâmetro query for uma instrução de pesquisa, o parâmetro reverse é válido e define o método de ordenação dos logs retornados.

  • Se o parâmetro query for uma instrução de pesquisa e análise combinadas, o parâmetro reverse torna-se inválido. A ordenação é definida pela cláusula order by na instrução analítica SQL.

powerSql

bool

No

Define se o Dedicated SQL deve ser utilizado. Para mais informações, consulte High-performance exact query and analysis (Dedicated SQL).

  • true: Utiliza o Dedicated SQL.

  • false (padrão): Utiliza o Standard SQL.

Além do parâmetro powerSql, você também pode configurar o Dedicated SQL através do parâmetro query.

Parâmetros de resposta

Para obter mais informações sobre os parâmetros de resposta, consulte GetLogs.

Exemplos

Escrever código Node.js para coletar logs

Neste exemplo, cria-se um arquivo chamado SLSQuickStart.js. O arquivo chama operações de API para criar um projeto, criar um logstore, criar um índice, gravar dados de log e consultar dados de log. O código abaixo fornece um exemplo:


const Client = require('@alicloud/log')
const sls = new Client({
    // In this example, the AccessKey ID and AccessKey secret are obtained from environment variables.
    accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
    accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
    // The endpoint of SLS. This example uses the endpoint of the China (Hangzhou) region. Replace it with the actual endpoint. 
    endpoint: 'cn-hangzhou.log.aliyuncs.com'
})
// Required. The name of the project.
const projectName = "aliyun-test-node-project"
// Required. The name of the logstore.
const logstoreName = "request_log"

async function test() {
    // Create a project.
    await sls.createProject(projectName, {
        description: 'test'
    })
    // Create a logstore.
    await sls.createLogStore(projectName, logstoreName, {
        // Required. The data retention period in days. A value of 3650 indicates that the data is permanently stored.
        ttl: 3600,
        // Required. The number of shards.
        shardCount: 2
    })
    // Create an index.
    const index = {
        "keys": {
            "request_method": {
                // Specifies whether the query is case-sensitive. false indicates that the query is case-insensitive.
                "caseSensitive": false,
                // Specifies whether to enable statistical analysis for the field.
                "doc_value": true,
                "token": ["\n", "\t", ";", ",", "=", ":"],
                "type": "text"
            }, "status": {
                // Specifies whether the query is case-sensitive. false indicates that the query is case-insensitive.
                "caseSensitive": false,
                // Specifies whether to enable statistical analysis for the field.
                "doc_value": true,
                "token": ["\n", "\t", ";", ",", "=", ":"],
                "type": "long"
            }
        },
    }
    await sls.createIndex(projectName, logstoreName, index)
    // Write logs.
    const logGroup = {
        logs: [
          { content: { request_method: 'GET', status: '200' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'GET', status: '500' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'GET', status: '200' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'POST', status: '500'}, timestamp: Math.floor(new Date().getTime() / 1000) }
        ],
        tags: [{ tag1: 'testTag' }],
        topic: 'testTopic',
        source: 'testSource'
      };
      await sls.postLogStoreLogs(projectName, logstoreName, logGroup);
      // Query example 1: Query the log data of the last day.
      const from = new Date();
      from.setDate(from.getDate() - 1);
      const to = new Date();
      const res = await sls.getLogs(projectName, logstoreName, from, to);
      
      // Query example 2: Use a query statement to count the number of logs in the last 10 minutes.
      // const from = new Date();
      // from.setSeconds(from.getSeconds() - 600)
      // const to = new Date();
      // query = '* | select count(*) as count';
      // topic = 'testTopic';
    
      // const res = await sls.getLogs(projectName,logstoreName,from,to,{
      //     query: query,
      //     topic: topic,
      //     line: 100,
      //     offset: 0,
      //     reverse: false,
      //     powersql: false
      // });
      
      console.log(res)
}
// Run the function.
test()

O código a seguir mostra um exemplo de resposta:

[
  {
    request_method: 'GET',
    status: '200',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'GET',
    status: '500',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'GET',
    status: '200',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'POST',
    status: '500',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  }
]

A tabela a seguir fornece mais exemplos de código para referência.

GitHub source code

Description

integration.test.js

Cria projetos, logstores e índices. Grava e consulta logs e logstores. Obtém distribuições de logs.

Coletar logs Node.js usando Logtail

Para ver um exemplo de como usar o Logtail para coletar logs log4js de uma aplicação Node.js, consulte Collect Node.js logs.