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 |
|
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.