Уинстон: Могу ли я получить все журналы в случае ошибки - PullRequest
0 голосов
/ 05 марта 2020

Я использую Winston для сохранения логов, пока что сохраняю только то, что могу сделать console.log, а также получаю полезную нагрузку запроса и полезную нагрузку ответа.

Мне нужно использовать это как трекер в случае ошибки.

  1. Каждый пользователь использует токен.
  2. И он может вызывать любой Api, который он хочет. Пример:

Пользователь с токеном "XXXXXX" входит в систему и получает доступ к этим API (/ api / getItem, / api / update / item /, /api.delete/item) и в / api / delete / item, происходит и ошибка.

Отсюда я хочу сделать следующее: сохранить файл в папке журнала с именем токена, а внутри этого файла я хочу сохранить все действие, и это было так, и как-то я хочу сохранить это. [[Пользователь с токеном "XXXXXX" входит в систему и получает доступ к этим API (/ api / getItem, / api / update / item /, /api.delete/item) и в элементе / api / delete /, происходит и ошибка.]]

Пока у меня есть этот код

app. js

require("dotenv").config();
const express = require("express");
const app = express();
const userRouter = require("./config/api/users/user.router");
const logger = require("./config/logger");
app.use(express.json());
app.use((req,res, next)=>
{
    logger.info(req.body);
    let oldSend = res.send;
    res.send = function(data){
        //logger.info(data);
        logger.info(JSON.parse(data));
        oldSend.apply(res,arguments);
    }
    next();
});
app.use("/api/users",userRouter);
app.listen(process.env.APP_PORT, ()=>{
    logger.error("server up and running on port: " + process.env.APP_PORT);
});

и мой файл логгера:

const {createLogger,transports,format} = require('winston');

//   require('winston-mongodb').MongoDB;
  const logger = createLogger({
    transports: [
    //   new transports.MongoDB({
    //     db: process.env.MONGO_DB,
    //     level: 'error',
    //     options: {
    //       useUnifiedTopology: true
    //     }
    //   }),
      new transports.File({
        filename: "error.log",
        level: "error",
        format: format.combine(format.timestamp(), format.json())
      }),
      new transports.File({
        filename: "info.log",
        level: "info",
        format: format.combine(format.timestamp(), format.json())
      }),
    ]
  });
module.exports = logger;

И я не знаю, что делать отсюда, так как я очень новичок с узлом, я едва понимаю основы c! Будет очень полезно, если кто-нибудь протянет мне руку, большое спасибо!

...