Express-File-Logger: Registro em disco para acessos feitos em servidores Express.js

Biblioteca criada para auxiliar a gravação em disco dos registros de acessos feitos em aplicações Express.js.

Com o objetivo de ser leve e plug-and-play, basta importar a biblioteca para iniciar a gravação dos registros.

Projeto open source, com seu código-fonte integral disponível no GitHub.

Ficha Técnica

Categoria Biblioteca
Sub-Categoria Registrador de Logs
Site npmjs.com/package/express-file-logger
Tecnologias
  • Node.js
  • Express.js
  • Código-Fonte GitHub
    Autor Eduardo Stuart

    Sobre o projeto

    Esse projeto busca atender os seguintes objetivos:

    • Permitir a gravação de todos os acessos realizados em um servidor Express.js, gravando cada registro em um arquivo texto
    • Permitir uma integração plug-and-play, não necessitando de nenhuma configuração especial

    Requisitos

    A biblioteca funciona em qualquer projeto que use a versão 4.x do framework Express.js


    Instalação

    Por estar sendo distribuído pelos servidores da NPMjs, basta executar o seguinte comando para incorporar a biblioteca no seu projeto (execute-o na pasta raiz do projeto):

    npm install express-file-logger
    

    Exemplo de uso

    Para que todos os acessos sejam registrados em um arquivo texto localizado no seu servidor em /logs/general_access.log, basta importar a biblioteca express-file-logger, passando o objeto que representa a sua aplicação *Express.

    // Importe a biblioteca Express e obtenha uma referência para a aplicação
    const express = require('express')
    const app = express()
    
    // Para que o conteúdo das requests sejam incluídas nos logs, 
    // inclua o suporte ao middleware express.json() antes de importar o 'express-file-logger'
    app.use(express.json())
    
    // Importe a biblioteca 'express-file-loggeer', inicializando-a com a aplicação Express criada acima
    require('express-file-logger')(app)
    
    // End-point de exemplo
    app.get('/', (req, res) => {
      res.send('Olá! Obrigado pela visita!')
    })
    
    app.listen(3000, console.log('Servidor está operando na porta 3000'))
    

    Exemplo do arquivo de log

    Por default, o arquivo de log, armazenado no caminho /logs/general_access.log, irá gravar uma ou mais linhas para cada solicitação.

    O arquivo apresenta o seguinte formato:

    28/03/2021 00:26:15 [::1] (GET) /
    28/03/2021 00:26:19 [::1] (POST) /api/user/register
      {"name":"Eduardo","email":"none@moment.com","password":"pass123"}
    

    Onde:

    • 28/03/2021 00:26:15
      • Representa a data e hora em que ocorreu o acesso
    • [::1]
      • Esse é o IP do visitante
    • (GET), (POST), etc:
      • Indica o método HTTP da solicitação
    • /api/user/register
      • O caminho do end-point acessado pelo visitante
    • {“name”:“Eduardo”,“email”:“none@moment.com”,“password”:“pass123”}
      • O conteúdo do corpo (body) da requisição

    Opções personalizadas

    É possível definir as seguintes opções:

    • basePath
      • Define a pasta aonde o arquivo de log será gravado
      • Por default, esse valor é /logs/
    • fileName
      • O nome que será usado para o arquivo de log
      • Por default, esse valor é general_access.log
    • ip
      • Valor boolean que indica se o IP do visitante será gravado no arquivo de log
      • Por default, esse valor é true (os IP’s serão registrados)
    • showOnConsole
      • Valor boolean que indica se cada acesso registrado também será impresso no terminal
      • Por default, esse valor é true (todos os acessos serão impressos no terminal)

    Essas opções devem ser passadas para a biblioteca durante a sua inicialização, como demonstrado no exemplo abaixo:

    const express = require('express')
    const app = express()
    app.use(express.json())
    
    const myOptions = {
      basePath: 'logs',
      fileName: 'meu_site.log',
      ip: false,
      showOnConsole: false
    }
    require('express-file-logger')(app, myOptions)
    ...
    

    Código-fonte

    O código-fonte completo da biblioteca pode ser obtida diretamente no GitHub.