O registro pode ser uma ferramenta inestimável para solucionar problemas e analisar o uso do aplicativo. Esses pacotes ajudam a tornar o processo simples.

O registro adequado é um aspecto crítico da criação e manutenção de aplicativos da Web funcionais. Ele pode ajudá-lo a rastrear erros, diagnosticar problemas de desempenho e entender como os usuários interagem com seu aplicativo.

O Node.js tem muitos pacotes de log para ajudá-lo a criar e gerenciar logs estruturados. Aqui você explorará os principais pacotes de registro atualmente disponíveis no ecossistema Node.js e como usá-los.

1. Winston

Winston é uma biblioteca Node.js que fornece funcionalidade de registro flexível, incluindo vários transportes. Um “transporte” é um meio de armazenamento para seus logs.

Winston suporta transportes de console, arquivo e rede. Isso significa que você pode imprimir seus logs no console, gravá-los em um arquivo ou enviá-los por uma rede. Usando os níveis de log do Winston, você pode criar transportes personalizados e filtrar logs com base na gravidade.

instagram viewer

Você pode instalar o Winston como uma dependência no diretório do seu projeto usando npm, o gerenciador de pacotes JavaScript. Execute este comando:

npm instalar winston

O bloco de código abaixo demonstra como configurar um sistema de registro básico usando o Winston. Você pode definir logs para diferentes locais e níveis variados de gravidade.

const Winston = exigir("winston");

// Registrador Winston
const logger = winston.createLogger({
nível: 'informações',
formato: winston.format.json(),
padrãoMeta: { serviço: 'meu-serviço' },
transportes: [
novo winston.transports. Console(),
novo winston.transports. Arquivo({ nome do arquivo: 'error.log', nível: 'erro' }),
novo winston.transports. Arquivo({ nome do arquivo: 'combined.log' })
]
});

logger.info('Olá, Winston!');
logger.warn('Aviso: Algo pode estar errado.');
logger.error('Um erro ocorreu.');

Este código configura um logger com três transportes. O primeiro é um transporte de console, que enviará mensagens de log para o console. O segundo é um transporte de arquivo que gravará logs com um nível de "error" em um arquivo "error.log". O terceiro é um transporte de arquivo que gravará todos os logs em um arquivo "combined.log".

O logger é configurado para registrar no nível "info" por padrão e inclui um objeto de metadados padrão com um campo "service" definido como "my-service".

O código então registra três mensagens usando o logger nos níveis "info", "aviso" e "erro", respectivamente. Essas mensagens serão enviadas para o console e os arquivos de log apropriados de acordo com a configuração dos transportes.

2. Morgan

Morgan é um middleware de log para Node.js que fornece recursos básicos de log de solicitação. Ele foi projetado para ser leve e fácil de usar. Morgan funciona interceptando solicitações HTTP e registrando informações relevantes, como método de solicitação, URL, código de status, etc.

Um dos principais benefícios do Morgan é sua simplicidade. Você pode adicioná-lo a um aplicativo Node.js com algumas linhas de código, pois não requer nenhuma configuração adicional para configurar.

Morgan oferece suporte a vários formatos de registro, incluindo o comum, combinado, curto, pequeno, e desenvolvedor formatos, permitindo que você escolha aquele que melhor se adapta às suas necessidades.

Você pode instalar o Morgan como uma dependência no diretório do seu projeto executando este comando:

npm instalar morgan

Este código mostra como usar Morgan em um aplicativo expresso:

const expresso = exigir("expressar");
const morgan = exigir("morgan");
const aplicativo = expresso();

app.use (morgan("desenvolvimento"));

app.get("/", (req, res) => {
res.enviar("Olá Mundo!");
});

app.listen(3000, () => console.registro(`Aplicativo iniciado`));

O código inicializa Morgan usando o desenvolvedor formatar. Quando você faz uma solicitação GET para a rota raiz (/), Morgan registra os detalhes dessa solicitação no console.

Apesar de sua simplicidade, o Morgan é um poderoso pacote de registro que fornece recursos essenciais de registro de solicitação para aplicativos Node.js.

3. pino

Pino é um pacote de registro popular e leve para aplicativos Node.js que oferece desempenho rápido e baixo overhead, conforme indicado em seus benchmarks.

O Pino oferece suporte a vários tipos de transporte, facilmente estendidos com transportes personalizados. Um dos principais recursos do Pino é sua capacidade de registrar mensagens formatadas em JSON, o que as torna fáceis de analisar e analisar.

O uso do Pino varia dependendo da estrutura do Node.js; você pode instalar o Pino como uma dependência no diretório do seu projeto Express executando o comando abaixo:

npm install pino-http

Para estruturas diferentes, verifique o Documentação Pino.

Este bloco de código mostra o uso do Pino em um aplicativo Express:

const expresso = exigir("expressar");
const aplicativo = expresso();
const pino = exigir('pino-http')()

app.use (pino)

app.get("/", (req, res) => {
pino (req, res) // registra requisição e resposta
req.log.info('rota raiz') // registra informações adicionais
res.enviar("Olá Mundo!");
});

app.listen(3000, () => console.registro(`Aplicativo iniciado`));

Este código inicializa o Pino e o registra como middleware. Quando você faz uma solicitação GET para a rota raiz (/), Pino registra os detalhes de sua solicitação e sua resposta no console.

4. Depurar

Debug é um pacote de registro para Node.js modelado de acordo com a técnica de depuração do núcleo do Node.js. Ele fornece uma solução de log leve que permite habilitar ou desabilitar o log seletivamente sem modificar o código, facilitando a depuração e a solução de problemas.

A depuração também permite que você defina namespaces de log, que fornecem uma estrutura hierárquica para seus logs com base nos componentes e módulos em seu aplicativo, tornando mais fácil filtrá-los e pesquisá-los. Além disso, o Debug oferece vários níveis de log, como erro, aviso e informações, que você pode usar para priorizar e filtrar seus logs.

Você pode instalar o Debug como uma dependência no diretório do seu projeto com este comando:

npm instalar depuração

Este código mostra o uso do Debug em um aplicativo Express:

const expresso = exigir('expressar');

// Importar depurar e criar namespace
const depurar = exigir('depurar')('meuaplicativo: servidor');

const aplicativo = expresso();
const port = process.env. PORTO || 3000;

app.get('/', (req, res) => {
depurar('Pedido recebido para /');
res.enviar('Olá Mundo!');
});

app.listen (porta, () => {
depurar(`Servidor escutando na porta ${porta}`);
});

O código cria um namespace, meuaplicativo: servidor. Este namespace irá distinguir logs relacionados ao seu “servidor” daqueles associados a outros módulos com um namespace diferente em seu aplicativo.

Execute este comando para iniciar o debug:

DEBUG=meuaplicativo:* nó server.js

Este comando acima corresponderá a qualquer mensagem de log com um namespace que comece com meuaplicativo:. Se você deseja apenas ver os logs relacionados ao seu servidor módulo, você pode definir o DEPURAR variável de ambiente para meuaplicativo: servidor.

Outra vantagem do Debug é sua compatibilidade com outros pacotes de registro, como o Winston.

Escolhendo um pacote de registro

A escolha de um pacote de log é uma decisão importante que pode afetar significativamente a eficiência e a eficácia do processo de depuração. É essencial considerar fatores como os recursos e capacidades do pacote, sua compatibilidade com sua linguagem de programação e ambiente de desenvolvimento, e sua facilidade de uso e configuração.

Por fim, a escolha do pacote de registro dependerá das necessidades e requisitos específicos do seu projeto.