Tag: log

  • Come loggare tutte le richieste ricevute da NodeJS/Express

    Come loggare tutte le richieste ricevute da NodeJS/Express

    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 🙂