Como criar log com Node.js


Neste tutorial, será apresentado como criar logs com Node.js.

Primeiramente, será abordado como instalar e usar a biblioteca Winston.

Em seguida, serão explicados os níveis de log.

Por fim, será demonstrado como salvar os logs no arquivo utilizando Node.js

Baixar o código fonte: Download

Full Stack: Curso de React e Node.js: Mais Detalhes do Curso

Como enviar SMS com Node.js: Acessar

Playlist completa como criar aplicação segura com Node.js: Acessar

Aulas gratuitas do curso de Node.js: Acessar


Para começar, é criado o arquivo "package.json" executando o comando "npm init" no terminal do editor ou no prompt de comando.

Em seguida, é instalada a dependência Express.

npm install express

Também é instalada a dependência Winston responsável por salvar os logs.

npm install --save winston

Criado o arquivo "app.js" com as rotas raiz e de login utilizando Express, e indicado para rodar o projeto na porta 8080.

// Incluir as bibliotecas
// Gerencia as requisições, rotas e URLs, entre outra funcionalidades
const express = require("express");

// Chamar a função express
const app = express();

// Criar a rota inicial
// Endereço para acessar: http://localhost:8080
app.get("/", (req, res) => {

    // Retornar a frase para a aplicação que fez a requisição da rota
    res.send("Página inicial.");
});

// Criar a rota login
// Endereço para acessar: http://localhost:8080/login
app.get("/login", (req, res) => {

	// Retornar a frase para a aplicação que fez a requisição da rota
	res.status(401).send("Erro: Usuário ou a senha incorreta!");

});

// Iniciar o servidor na porta 8080, criar a função utilizando modelo Arrow function para retornar a mensagem de sucesso
app.listen(8080, () => {
    console.log("Servidor iniciado na porta 8080: http://localhost:8080");
});

Em seguida, será criado o arquivo "logger.js", responsável por salvar os logs no arquivo "logs/arquivo_de_log.log".

// Incluir a biblioteca de log
const {createLogger, transports, format } = require("winston");

// Criar o logger personalizado
const logger = createLogger({

    // Definir o nível mínimo de log (debug, info, warn, error)
    level: "debug",

    // Definir o formato das mensagens de log como JSON
    format: format.json(),

    // Definir os métodos de log (info, warn, error, etc.) 
    transports: [

        // Definir onde será salvo os log
        new transports.File({
            filename: "logs/arquivo_de_log.log",
        }),
    ]
});

// Exporta o logger para que possa ser usado em outros módulos
module.exports = logger;

Para utilizar o arquivo responsável por salvar os logs, é necessário incluí-lo no arquivo app.js.

// Incluir o arquivo responsável em salvar os logs
const logger = require('./logger');

Com o arquivo incluído, na rota raiz será acrescentado o código para salvar o log no nível de debug.

app.get("/", (req, res) => {

    // Salvar o log no nível debug
    logger.debug("Acessou a página inicial.");

    // Retornar a frase para a aplicação que fez a requisição da rota
    res.send("Página inicial.");
});

Na rota de login, será acrescentado o código para salvar o log no nível de erro.

app.get("/login", (req, res) => {

    try {
        // Gerar o erro para testar
        throw new Error("Usuarios não logado.");
    } catch (error) {

        // Salvar o log no nível error
        logger.error("Tentativa de login com dados incorretos.");

        // Retornar a frase para a aplicação que fez a requisição da rota
        res.status(401).send("Erro: Usuário ou a senha incorreta!");
    }

});

Executando o projeto com "node app.js" ou "nodemon app.js" e acessando a rota raiz "http://localhost:8080", os logs serão salvos no nível de debug no arquivo "logs/arquivo_de_log.log". Ao acessar a rota de login "http://localhost:8080/login", os logs serão salvos no nível de erro. 

Baixar o código-fonte completo do projeto.

Bom, era isso. Espero que o tutorial tenha sido útil!