Для всех, кто придет к этому вопросу в будущем, смущенный документацией, единственный способ, которым я смог достичь этого, был путем добавления Console
транспорта, объединяющего splat() and
simple () formats. i also added
colorized`, когда я нахожу Цветовое кодирование особенно полезно. этот пример показан в документах, но документы повсюду и сбивают с толку. надеюсь, это поможет.
const winston = require('winston');
const format = winston.format;
logger.add(new winston.transports.Console({
format: format.combine(
format.splat(),
format.simple(),
format.colorize(),
)
}));
РЕДАКТИРОВАТЬ: в попытке сопоставить вывод с console.log
настолько близко, насколько я мог, я придумал это
logger.add(new winston.transports.Console({
format: format.combine(
format.errors({ stack: true }),
format.splat(),
format.colorize(),
format.timestamp(),
format.printf(({level,message,timestamp,...restProps})=>{
var retval = `${timestamp} ${level}: `;
if(message) {
retval += message;
}else{
retval += "\r\n"+util.inspect(JSON.parse(restProps[Symbol.for('message')]));
}
return retval;
})
)
}));
Я также использую небольшую удобную упаковку, которая выглядит следующим образом:
function _log(...rest) {
logger.log('info',...rest);
}
['emerg','alert','crit','error','warning','notice','info','debug'].forEach(fn=>{
_log[fn] = (...rest) => logger.log(fn,...rest);
})
использование:
_log(someObject) //should log the object same as console.log does
_log('app running on port %d',3000) //should printf like console.log does