Morgan es un middleware que registra requests y errores HTTP. El middleware es simplemente una función que tiene acceso a los métodos del ciclo de vida de solicitud y respuesta. Podemos usar formatos predefinidos o crear nuevos para formatear nuestros registros.
Instalación de morgan:
Paso 1: puede visitar a morgan para obtener la documentación. El paquete se puede instalar con este comando.
npm install morgan
Paso 2: una vez completada la instalación, puede verificar la versión instalada del paquete con este comando:
npm ls morgan
Paso 3: para comenzar a trabajar con morgan, cree un archivo con el nombre index.js. El paquete se puede incluir en index.js con este comando.
const morgan = require('morgan')
Paso 4: para usar morgan, debemos invocar una instancia y pasarla como argumento a app.use(), que es un middleware rápido antes de las requests HTTP. Esto puede hacerse de la siguiente manera:
app.use(morgan(string));
La string anterior define el formato en el que queremos registrar nuestra información.
Estructura del proyecto: La estructura del proyecto se verá como la imagen de abajo.
Morgan tiene cinco formatos predefinidos que podemos usar directamente para obtener la información requerida. Estos son:
- combinado: Proporciona los registros de formato combinado estándar de Apache.
- common: proporciona una salida de registro común estándar de Apache.
- dev: es un formato de registro codificado por colores.
- short: Es más corto que el formato predeterminado. También incluye el tiempo de respuesta.
- tiny: Es el log más corto que contiene muy poca información.
El formato de salida de todos estos formatos predefinidos se puede encontrar aquí .
Ejemplo 1:
index.js
// Requiring modules const express = require("express"); const morgan = require("morgan"); const app = express(); // Using combined predefined format app.use(morgan("combined")); // Creating an endpoint where // requests can be made and // we can get logs app.get("/", (req, res) => { res.send("GeeksforGeeks"); }); // Running on PORT const PORT = 5000; app.listen(PORT, () => { console.log(`Running on PORT: ${PORT}`); });
Paso para ejecutar la aplicación: En la terminal ejecute el siguiente comando para ejecutar el archivo index.js.
node index.js
Producción:
::1 - - [10/Feb/2021:22:18:30 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36"
Cuando visite https://localhost:5000, el registro anterior aparecerá en la consola. El registro nos brinda información diversa, como la fecha y la hora en que se realizó la solicitud, el método de solicitud, que en este caso es GET , a qué URL se realizó la solicitud, que es ‘ /’ , y mucho más.
Ejemplo 2:
index.js
// Requiring modules const express = require("express"); const morgan = require("morgan"); const app = express(); // Using dev predefined format // Returns app.use(morgan("dev")); // Creating an endpoint where // requests can be made and // we can get logs app.get("/home", (req, res) => { res.send("GeeksforGeeks"); }); // Running on PORT const PORT = 5000; app.listen(PORT, () => { console.log(`Running on PORT: ${PORT}`); });
Producción:
Cuando visite «https://localhost:5000», el resultado será:
GET / 404 4.031 ms - 139
Como no tenemos ningún punto final para la URL “/” , terminamos obteniendo un error 404 con el método de tipo GET y el tiempo de respuesta en milisegundos.
Cuando visite «https://localhost:5000/home», el resultado será:
GET /home 200 3.416 ms - 13
En nuestro programa, hemos creado un punto final de «/home» por lo que obtenemos una respuesta de 200 a cambio.
Ejemplo 3:
index.js
// Requiring modules const express = require("express"); const morgan = require("morgan"); const app = express(); // Creating customised logs // :method return method used like - GET,POST // :url returns to which url request was made // :status returns the status returned from req like - 200,404 // :response-time returns the time it took to give response // Rest things are printed as it is app.use( morgan( "Method- :method URL- :url Status- :status ResponseTime- :response-time ms" ) ); // Creating an endpoint where // requests can be made and // we can get logs app.get("/home", (req, res) => { res.send("GeeksforGeeks"); }); // Running on PORT const PORT = 5000; app.listen(PORT, () => { console.log(`Running on PORT: ${PORT}`); });
Producción:
Method- GET URL- /home Status- 200 ResponseTime- 3.392 ms
En el programa anterior, hemos personalizado nuestro registro de salida. El formato es : seguido del nombre de la información. Estos son tokens predefinidos que se pueden agregar usando : delante de ellos.
También podemos crear tokens personalizados con la ayuda del método .token(). Vea el siguiente ejemplo:
Ejemplo 4:
index.js
// Requiring modules const express = require("express"); const morgan = require("morgan"); const app = express(); // Creating custom token // with name time morgan.token( "time", " :method request for :url was received.Response time: :response-time" ); // Using the name of // token we created above app.use(morgan("time")); // Creating an endpoint where // requests can be made and // we can get logs app.get("/home", (req, res) => { res.send("GeeksforGeeks"); }); // Running on PORT const PORT = 5000; app.listen(PORT, () => { console.log(`Running on PORT: ${PORT}`); });
Producción:
GET request for /home was received.Response time: 5.567
Morgan es un registrador muy simple que permite flexibilidad al registrar requests HTTP y nos brinda la información requerida. Así es como podemos usar morgan en nuestra aplicación
Publicación traducida automáticamente
Artículo escrito por pritishnagpal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA