Skip to main content
Esta documentação descreve como configurar o logging com a integração AppSignal for Node.js.

Configurar logging

🔐 Não envie Informações Pessoais Identificáveis (PII) para a AppSignal. Filtre PII (por exemplo, nomes, e-mails) dos logs e use um ID, hash ou identificador pseudonimizado no lugar.

Para entidades cobertas pela HIPAA, mais informações sobre como assinar um Business Associate Agreement (BAA) podem ser encontradas em nossa documentação de Business Add-Ons.
Você não precisa criar uma fonte de log para enviar logs da integração AppSignal for Node.js. Uma fonte de log “application” será criada automaticamente.

Uso autônomo

Para usar o logger, você precisa importar o AppSignal e configurar o logger usando a função .logger(). A função .logger() aceita dois argumentos: group e, opcionalmente, severityThreshold. Se severityThreshold não for fornecido, o padrão será info.
const { Appsignal } = require("@appsignal/nodejs");

const logger = Appsignal.logger("app");

// with a severity threshold:
const logger = Appsignal.logger("app", "info");
Existem seis níveis de severidade disponíveis: trace, debug, info, log, warn e error, cada um deles com sua própria função de mesmo nome. Essas funções aceitam dois argumentos: message e attributes. Attributes é usado para metadados e é opcional. As mensagens só serão registradas se o nível de severidade delas estiver acima do limite de severidade.
logger.info("Log message line");
logger.debug("User logged in", { user_id: 123 });
Observe que, se a severidade da mensagem estiver abaixo do limite de severidade definido na inicialização do logger, ela não será enviada ao AppSignal. Você pode consultar e filtrar pelo conteúdo da mensagem e pelos valores dos atributos usando nossa sintaxe de consulta.

Usando múltiplos backends de logging

Atualmente não é possível enviar logs para múltiplos backends usando o logger padrão do Node.js. Para configurações mais complexas, recomendamos usar uma biblioteca de logging como Winston ou Pino.

Uso com Winston

Se você usa o Winston para registrar mensagens em toda a sua aplicação, pode usar nosso transport do Winston para enviar esses logs ao AppSignal. Depois de importar o transport da integração AppSignal, adicione-o à lista de transports do seu logger Winston:
const winston = require("winston");
const { WinstonTransport } = require("@appsignal/nodejs");

const logger = winston.createLogger({
  transports: [new WinstonTransport({ group: "app" })],
});

Child Logger

Você pode usar um child logger para adicionar tags extras às mensagens de log. Você define tags ao criar o child logger ou passa tags como metadados ao escrever uma mensagem de log. Digamos que queremos mais contexto nos logs das ações de um usuário específico dentro de uma sessão específica. No exemplo abaixo, um child logger para o grupo background é usado para adicionar sessionID, com as tags adicionais drinkID e paymentID fornecidas como metadados ao criar uma mensagem de log, e se um grupo for passado para o child, ele irá sobrescrever o que foi configurado no transport.
const logger = winston.createLogger({...});

const sessionLogger = logger.child({
  group: "background",
  sessionID: user.id,
});

sessionLogger.debug("User logged in");
sessionLogger.info("User ordered coffee", { drinkID: 30, paymentID: 20082 });
sessionLogger.debug("User logged out");

Usando múltiplos backends de logging

Para enviar logs tanto para o logger do AppSignal quanto para o STDOUT, adicione outro transport:
const winston = require("winston");
const { WinstonTransport } = require("@appsignal/nodejs");

const logger = winston.createLogger({
  transports: [
    new WinstonTransport({ group: "app" }),
    new winston.transports.Console(),
  ],
});

Uso com Pino

Se o Pino é a sua biblioteca de logging preferida, você pode usar o transport Pino do AppSignal para enviar logs ao AppSignal. O argumento group terá como padrão “app” se não for fornecido.
import pino from "pino";

const logger = pino({
  transport: {
    targets: [
      { target: "@appsignal/nodejs/pino", options: { group: "my-group" } }
    ],
  },
});

Usando múltiplos backends de logging

Para enviar logs tanto para o logger do AppSignal quanto para o STDOUT, adicione outro target:
import pino from "pino";

const logger = pino({
  transport: {
    targets: [
        { target: "@appsignal/nodejs/pino", options: { group: "my-group" } },
        { target: 'pino/file', options: {destination: 1} }
    ],
  },
});

Formatos

Formato detectado automaticamente

O pacote AppSignal for Node.js vai detectar automaticamente o formato da linha de log como JSON, Logfmt ou plaintext por padrão, e fará o parsing dos atributos a partir disso. Você não precisa definir manualmente o formato do log, a não ser que ele não esteja sendo detectado corretamente. Por favor, também nos avise se isso não estiver funcionando automaticamente.
const { Appsignal } = require("@appsignal/nodejs");

// Plaintext format
const logger = Appsignal.logger("app", "info");
logger.info("This is about the blog");

// Logfmt format
const logger = Appsignal.logger("app", "info");
logger.info("category=blog This is about the blog");

// JSON format
const logger = Appsignal.logger("app", "info");
logger.info('{"category": "blog", "message": "This is about the blog"}');

Logfmt

O AppSignal Logger pode ser configurado explicitamente para esperar que a linha esteja formatada como Logfmt e fazer o parsing dos atributos a partir dela. Use essa opção quando estiver usando uma versão mais antiga do pacote AppSignal for Node.js, que não suporta a detecção automática de formato. O formato de log pode ser especificado ao criar um logger. Ao inicializar o AppSignal logger, passe o valor "logfmt" como terceiro argumento.
const { Appsignal } = require("@appsignal/nodejs");

const logger = Appsignal.logger("app", "info", "logfmt");
logger.info("category=blog this is about the blog");
No exemplo acima, um atributo filtrável category com o valor “blog” será registrado.

JSON

O AppSignal Logger pode ser configurado explicitamente para esperar que a linha esteja formatada como JSON e fazer o parsing dos atributos a partir dela. Use essa opção quando estiver usando uma versão mais antiga do pacote AppSignal for Node.js, que não suporta a detecção automática de formato. O formato de log pode ser especificado ao criar um logger. Ao inicializar o AppSignal logger, passe o valor "json" como terceiro argumento.
const { Appsignal } = require("@appsignal/nodejs");

const logger = Appsignal.logger("app", "info", "json");
logger.info('{"category": "blog", "message": "this is about the blog"}');
No exemplo acima, um atributo filtrável category com o valor “blog” será registrado.

Filtrando logs

Você pode usar a opção de configuração ignoreLogs para ignorar linhas de log com base na mensagem. Veja nosso guia Ignore Logs para saber mais.

Precisa de ajuda?

Depois de configurar sua aplicação Node.js para enviar logs, os logs devem aparecer no AppSignal. Se você tiver dúvidas sobre este passo ou o AppSignal não estiver recebendo logs, você sempre pode entrar em contato para obter ajuda. Vamos te ajudar a voltar ao normal!