Невозможно сохранить данные журнала в БД

#node.js #express #winston

#node.js #экспресс #winston

Вопрос:

Я внедрил logger, и он успешно входит в систему.файл журнала, но при попытке сохранить тот же журнал в MongoDB он выдает только временную метку, но не другие данные журнала.

winston-logger.js:

 const winston = require('winston');
require('winston-mongodb');
dateFormat = () => {
   return new Date(Date.now()).toUTCString()
}
class LoggerService {
  constructor(route) {
    // this.log_data = null
    this.route = route
    const logger = winston.createLogger({
      transports: [
        new winston.transports.Console(),
        new winston.transports.File({
          filename: `./logs/${route}.log`
        }),
        new winston.transports.MongoDB({
          db:process.env.MongoDB,
          collection:'log',
        })
      ],
      format: winston.format.json((info) => {
        console.log('infor', info)
        let message = `${JSON.stringify(info.obj)}`
        return message
      })
    });
    this.logger = logger
  }
  async info(message) {
    this.logger.log('info', message);
  }
  async info(message, obj) {
    // this.logger.log('info', message, {
    //   obj
    // })
    this.logger.log('info', obj)
  }
}
module.exports = LoggerService
 

вызов регистратора в api api.js:

 const Logger = require('./config/winston-logger');
const logger = new Logger('app')

app.post('test',(req,res) => {
    something something happens
    logger.info("Request success",{"body":req.body})
}
 

при сохранении в файл журнала, но при попытке сохранения в mongo-db сохраняется только временная метка.

Ответ №1:

Я понял это …. если кто-нибудь сталкивается с такой же проблемой…..

// вместо json измените метаданные и сохраните в meta

формат: winston.format.metaData((info) => { console.log(‘infor’, info) пусть сообщение = ${JSON.stringify(info.obj)} возвратное сообщение })