Регистрация размера тела POST с использованием morgan при получении запроса

Я использую библиотеку "Морган" для регистрации моего запроса, времени и размера ответа.

Но есть ли способ для POST-запроса регистрировать POST-запрос и размер его тела при получении?

2 ответа

Решение

Пройдя около часа, изучив документацию Моргана, я нашел хорошее решение проблемы.

Вместо использования morgan-body ведение журнала может быть выполнено с использованием самой библиотеки morgan во время запроса. Даже длина тела POST может быть записана довольно легко.

Вот как это можно сделать:

app.use(morgan({format: 'POST body length in bytes :req[Content-Length]', immediate: true}))

Здесь параметр "format" определяет формат журнала, а параметр "немедленный" записывает журнал в момент получения запроса.

Используйте пользовательские форматы токенов из модуля Morgan

создайте токен для тела, а затем просто добавьте его в свой формат.

Вот пример рабочего кода, который нужно добавить в app.js

morgan.token('body', function (req, res) { return JSON.stringify(req.body) }); app.use(morgan(':method :url :status :response-time ms - :res[content-length] :body - :req[content-length]'));

Вы можете использовать morgan-body, он захватывает все типы запросов, будь то post или get

import morganBody from 'morgan-body';
import express from 'express';
import bodyParser from 'body-parser';

const app = express();

// must parse body before morganBody as body will be logged
app.use(bodyParser.json());

// hook morganBody to express app
morganBody(app);

Вы можете написать собственное промежуточное ПО

 app.use((req, res, next) => {
    console.log(req.body);
    next();
  });

Вы также можете проверить, является ли запрос POST или PUT и т. Д.

if (req.method === "POST") {
       // log the budy
    }
Другие вопросы по тегам