Нет встроенного способа сделать это, но вы определенно можете добавить его самостоятельно - вот как:
Во-первых, настройте свой регистратор, как обычно. Например:
var logger = new (winston.Logger)({
"exitOnError" : true,
"transports" : [
new (winston.transports.Console)({ "colorize" : true, "level" : "silly", "silent" : false, "handleExceptions" : false }),
]
});
Затем переопределите метод log () (он всегда вызывается методами уровня - logger.foo()
фактически вызывает logger.log('foo')
.)
logger.log = function(){
var args = arguments;
if(args[2]) args[3] = args[2];
args[2] = {
"foo" : "bar"
}
winston.Logger.prototype.log.apply(this,args);
}
Все, что я делаю выше, делает так, чтобы при вызове logger.log()
он вызывал вышеуказанный метод, который добавляет метаданные (в данном случае объект, содержащий ключ foo
). Затем он вызывает метод Winston Logger.log из соответствующего контекста.
Приведенный выше код будет в модуле, который вы создаете, в нижней части просто экспортируйте регистратор:
module.exports = logger;
и импортируйте модуль логгера вместо модуля winston в ваши подклассы.
var logger = require('./logger.js');
Надеюсь, это поможет!