Я пытаюсь перейти с winston 2 на 3 из-за проблемы с разветвлением вложенных объектов мангуста.Это вызвало рекурсивный вызов и привело к сбою ... (позже я открою проблему для winston2).вместо того, чтобы везде менять свой код для строкового преобразования, я попытался обновить Winston.Это устранило проблему, и это печатает успешно.тем не менее, мой код также содержит места, где такой код существует, logger.info («получил какой-то объект, подобный такому», {некоторый объект}), он больше не работает в winston 3. он печатает только первую часть.
пример кода winston2:
const winston = require('winston');
// logger configuration
var logger = new winston.Logger({
transports: [
new winston.transports.Console({
level:'info',
handleExceptions: false,
json: false,
colorize: true,
prettyPrint: true
})
],
exitOnError: false
});
logger.info('test1',{'test':'test2'}, 'test3?');
вывод:
info: test1 { test: 'test2' } test3?
как ожидается
код winston3:
const winston = require('winston');
const prettyJson = winston.format.printf(info => {
if (info.message.constructor === Object) {
info.message = JSON.stringify(info.message, null, 4)
}
console.log(info)
return `${info.timestamp} ${info.level}: ${info.message}`
});
var logger = winston.createLogger({
transports:[
// transport that prints logs into the console
new winston.transports.Console({
level: 'info',
format: winston.format.combine(
// winston.format.timestamp(),
// winston.format.colorize(),
// winston.format.prettyPrint(),
// winston.format.splat(),
winston.format.simple(),
// prettyJson
)
})
]
});
logger.info('test1',{'test':'test2'}, 'test3?');
output: info: test1 {"test":"test2"}
независимо от того, что я пробую, я не могу повторить тот же вывод winston2.