Как мы можем регистрировать каждый http запрос и ответ и сохранять его в базе данных в экспресс - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь сохранить все входящие запросы и их ответы в базе данных.

Я пытаюсь добиться этого с помощью пакета express-winston npm, и он регистрирует тело ответа и запрос в консоли.но я хочу сохранить его в базе данных.как я могу это сделать ????

var winston = require("winston");
var expressWinston = require("express-winston");

expressWinston.requestWhitelist.push("body");
// expressWinston.responseWhitelist.push("body");
app.use(
  expressWinston.logger({
    transports: [
      new winston.transports.Console({
        json: true,
        colorize: true
      })
    ]
  })
);
expressWinston.responseWhitelist.push("body");

Я получаю этот журнал в консоли.

{"level": "info", "message": "HTTPGET / ideas / category / hello "," meta ": {" res ": {" statusCode ": 200," body ": {" hiiii ":" djdjjdjdjdd "}}," req ": {" url ":"/ идеи / категория / привет», "заголовки": { "хозяин": "локальный: 5000", "соединение": "Keep-Alive", "обновить-небезопасные-запросы": "1", "агент пользователя": "Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 75.0.3770.100 Safari / 537.36", "принять": "text / html, application / xhtml + xml, application / xml; q= 0,9, image / webp, image / apng, / ; q = 0,8, обмен приложениями / знаками; v = b3 "," accept-encoding ":" gzip, deflate, br "," accept-языка ":" ан-ГБ, ан; д = 0,9, EN-US; д = 0,8, привет; д = 0.7" , "печенье": "connect.sid =% s 3A90PCwDOrv0v9yeSYZq-4I4Quactbcduq.8EpLenv6t1lCPqLcV5R1o1% 2FF15p9kEBqrZ82FBHiYJA"}, "method": "GET", "httpVersion": "1.1", "originalUrl": "/ ideas / category / hello", "query": {}}, "responseTime": 2}}

1 Ответ

0 голосов
/ 27 июня 2019

После некоторых исследований я получил свой ответ. мы можем добиться этого с помощью пакета winpm-sql-transport npm. см. код, приведенный ниже:

const { Logger } = require('winston');
const { SQLTransport } = require('./../lib/winston-sql-transport');

const logger = new Logger({
  transports: [
    new SQLTransport({
      tableName: 'winston_logs',
    })]
});

module.exports = logger;
...