4
當我通過winston傳遞元數據時,快捷方式winston.info方法未傳遞元數據。winston.js info方法未傳遞元數據
var winston = require('winston');
winston.info("winston with metadata", {cluster: "bar"});
winston.log("info", "winston with metadata", {cluster: "baz"});
OUTPUT:
info: winston with metadata
info: winston with metadata cluster=baz
我期望兩次調用打印出來的元數據?
通過溫斯頓代碼挖看起來它動態地生成用於每個級別(「信息」,「調試」,「錯誤」)的快捷功能,並且試圖處理額外的元數據參數:
//
// ### function setLevels (target, past, current)
// #### @target {Object} Object on which to set levels.
// #### @past {Object} Previous levels set on target.
// #### @current {Object} Current levels to set on target.
// Create functions on the target objects for each level
// in current.levels. If past is defined, remove functions
// for each of those levels.
//
exports.setLevels = function (target, past, current, isDefault) {
if (past) {
Object.keys(past).forEach(function (level) {
delete target[level];
});
}
target.levels = current || config.npm.levels;
if (target.padLevels) {
target.levelLength = exports.longestElement(Object.keys(target.levels));
}
//
// Define prototype methods for each log level
// e.g. target.log('info', msg) <=> target.info(msg)
//
Object.keys(target.levels).forEach(function (level) {
target[level] = function (msg) {
var args = Array.prototype.slice.call(arguments, 1),
callback = args.pop(),
ltype = typeof callback,
meta = args.length ? args : null;
if (ltype !== 'function') {
if (meta && ltype !== 'undefined') {
meta.push(callback);
}
callback = null;
}
if (meta) {
meta = (meta.length <= 1 && meta.shift()) || meta;
return callback
? target.log(level, msg, meta, callback)
: target.log(level, msg, meta)
}
return callback
? target.log(level, msg, callback)
: target.log(level, msg)
};
});
return target;
};
從文檔和代碼看,它看起來不像'info()'期待第二個參數。我會堅持'log('info'...)'。 – 2013-05-02 23:27:41