Se hai bisogno di loggare tutte le richieste ricevute dal tuo software che gira su NodeJS/Express, sappi che esiste un moduletto perfetto per l’eventualità.
Avrai bisogno di Morgan ed FS e in particolare dovrai avere:
- modulo morgan: Questo modulo ci permette di loggare le richieste HTTP.
- modulo fs: Serve per gestire il file system e scrivere i log su file.
- Middleware personalizzato: Questo middleware raccoglie le informazioni richieste (URL referrer, metodo, rotta chiamata, ecc.).
- Un file di testo: Utilizzeremo fs per scrivere i log in append.
Avrai bisogno di Morgan ed FS, se non l’hai fatto, installali:
npm install morgan fs
Dopo aver installato morgan e fs, puoi semplicemente aggiungere codice di questo tipo:
const express = require('express');
const fs = require('fs');
const path = require('path');
const morgan = require('morgan');
const app = express();
// Crea un flusso di scrittura per salvare i log in un file di testo
const logStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' });
// Middleware per loggare le richieste HTTP
app.use(morgan((tokens, req, res) => {
return [
new Date().toISOString(),
tokens.method(req, res), // Metodo HTTP (GET, POST, etc.)
tokens.url(req, res), // URL della rotta
tokens['referrer'](req, res), // Referrer
tokens.status(req, res), // Status della risposta
tokens['response-time'](req, res), 'ms' // Tempo di risposta
].join(' ');
}, { stream: logStream }));
Cosa fa il codice:
- Morgan: Usato per loggare le richieste. Il log viene personalizzato per includere il metodo, la rotta chiamata, il referrer e altre informazioni.
- fs.createWriteStream: Crea un file chiamato
access.log
dove vengono salvati i log. - Log personalizzato: Il middleware logga le informazioni come data, metodo HTTP, URL della richiesta, referrer e tempo di risposta.
Questo è un sistema semplice ed efficace per tenere traccia di tutte le richieste fatte al server. Puoi adattarlo in base a eventuali esigenze specifiche.
Ciao 🙂