#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)}
возвратное сообщение })