Graylog: Utilizar o pacote Winston GELF para enviar logs de Node.js para o Graylog

Esta documentação faz parte do guia Utilizar com Node.js. Consulte o guia completo aqui: Como enviar logs de Node.js para o Graylog.

👋 Bem-vindo à documentação da Stackhero

A Stackhero disponibiliza uma solução Graylog cloud totalmente gerida, concebida para garantir rapidez e simplicidade. Pode:

  • Contar com um servidor de email SMTP dedicado e ilimitado incluído no seu serviço.
  • Aplicar atualizações de forma simples, com apenas um clique, sem necessidade de intervenção manual.
  • Utilizar um domínio personalizado protegido por HTTPS (por exemplo, https://logs.sua-empresa.com), proporcionando à sua equipa um acesso direto e seguro.
  • Beneficiar de elevada performance e segurança numa infraestrutura privada e dedicada, sem recursos partilhados nem vizinhos ruidosos.

Concentre-se nos seus dados, não nas ferramentas: pode começar a utilizar a solução Graylog cloud hosting da Stackhero em apenas alguns minutos.

warning É preferível utilizar o pacote graylog2, exceto se já estiver a usar Winston no seu projeto. Nesse caso, pode substituí-lo por winston-gelf.

Para instalar o pacote Winston GELF, execute:

npm install winston-gelf

Se ainda não tiver o Winston no seu projeto, pode adicioná-lo com:

npm install winston

Aqui está uma configuração básica:

const winston = require('winston');
const winstonGelf = require('winston-gelf');
const process = require('process');

const logger = winston.createLogger({
  transports: [
    new winston.transports.Console(),
    new winstonGelf({
      // Consulte todas as opções do gelfPro aqui: https://www.npmjs.com/package/gelf-pro
      gelfPro: {
        fields: {
          env: process.env.NODE_ENV || 'development'
        },
        adapterName: 'udp',
        adapterOptions: {
          host: '<XXXXXX>.stackhero-network.com', // Substitua pelo seu domínio Graylog
          port: 12201,
        }
      }
    })
  ]
});

// Exemplo de log informativo
logger.info('This is a log information');

// Exemplo de log de erro
try {
  throw Error('This is an example error');
}
catch(error) {
  logger.warn({ message: 'Error triggered', error });
}

Não se esqueça de configurar o seu input Graylog (detalhes abaixo).