Я предлагаю использовать пакет express-winston .Смотрите ссылку для документации.После установки пакета, npm i express-winston, создайте имя промежуточного программного обеспечения logger.js (или как вам угодно).скопируйте следующий код ниже
const expressWinston = require('express-winston');
const requestLog = expressWinston.logger({
transports: [
new winston.transports.Console({
format: winston.format.json({
space: 2
})
}),
new winston.transports.MongoDB({
db: 'localhost:27001', //Your Db connection
options: {
useNewUrlParser: true,
poolSize: 2,
autoReconnect: true
}
})
],
meta: true,
msg: "Request: HTTP {{req.method}} {{req.url}}; Username: {{req.user.preferred_username}}; ipAddress {{req.connection.remoteAddress}}",
requestWhitelist: [
"url",
"method",
"httpVersion",
"originalUrl",
"query",
"body"
]
});
exports.requestLog = requestLog;
В файле app.js требуется файл журнала, чтобы он применялся глобально:
const logger = require('../middleware/logger');
const express = require('express');
const app = express();
app.use(logger.requestLog);
Существуют дополнительные параметры, которые можно включить, например, например: expressWinston.responseWhitelist.push ('body')
, которые будут обеспечивать тело ответа вobject.
Вы можете удалить транспорт для консоли, если не хотите видеть все запросы, я только добавил его, чтобы вы могли видеть объект, не заходя в базу данных каждый раз.