merged util.format branch (fixes a lint error and simplifies the code)
This commit is contained in:
commit
41ddf5eea7
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,5 +2,5 @@
|
|||||||
*.log??
|
*.log??
|
||||||
build
|
build
|
||||||
node_modules
|
node_modules
|
||||||
|
|
||||||
.bob/
|
.bob/
|
||||||
|
test/streams/test-rolling-file-stream*
|
||||||
|
@ -26,40 +26,19 @@ var dateFormat = require('./date_format')
|
|||||||
OFF: "grey"
|
OFF: "grey"
|
||||||
};
|
};
|
||||||
|
|
||||||
function formatLogData(logData) {
|
function wrapErrorsWithInspect(items) {
|
||||||
var output = ""
|
return items.map(function(item) {
|
||||||
, data = Array.isArray(logData) ? logData.slice() : Array.prototype.slice.call(arguments)
|
if ((item instanceof Error) && item.stack) {
|
||||||
, format = data.shift();
|
return { inspect: function() { return util.format(item) + '\n' + item.stack; } };
|
||||||
|
|
||||||
if (typeof format === "string") {
|
|
||||||
output = format.replace(replacementRegExp, function(match) {
|
|
||||||
switch (match) {
|
|
||||||
case "%s":
|
|
||||||
return data.shift().toString();
|
|
||||||
case "%d":
|
|
||||||
return new Number(data.shift());
|
|
||||||
case "%j":
|
|
||||||
return JSON.stringify(data.shift());
|
|
||||||
default:
|
|
||||||
return match;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
//put it back, it's not a format string
|
return item;
|
||||||
data.unshift(format);
|
|
||||||
}
|
|
||||||
|
|
||||||
data.forEach(function (item) {
|
|
||||||
if (output) {
|
|
||||||
output += ' ';
|
|
||||||
}
|
|
||||||
output += util.inspect(item);
|
|
||||||
if (item && item.stack) {
|
|
||||||
output += "\n" + item.stack;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return output;
|
function formatLogData(logData) {
|
||||||
|
var data = Array.isArray(logData) ? logData : Array.prototype.slice.call(arguments);
|
||||||
|
return util.format.apply(util, wrapErrorsWithInspect(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
var styles = {
|
var styles = {
|
||||||
|
@ -28,7 +28,6 @@ vows.describe('log4js layouts').addBatch({
|
|||||||
});
|
});
|
||||||
assert.equal(output, '\x1B[31m[2010-12-05 14:18:30.045] [ERROR] cheese - \x1B[39mnonsense');
|
assert.equal(output, '\x1B[31m[2010-12-05 14:18:30.045] [ERROR] cheese - \x1B[39mnonsense');
|
||||||
},
|
},
|
||||||
|
|
||||||
'should support the console.log format for the message': function(layout) {
|
'should support the console.log format for the message': function(layout) {
|
||||||
var output = layout({
|
var output = layout({
|
||||||
data: ["thing %d", 2],
|
data: ["thing %d", 2],
|
||||||
@ -66,7 +65,7 @@ vows.describe('log4js layouts').addBatch({
|
|||||||
colour: "green",
|
colour: "green",
|
||||||
toString: function() { return "ERROR"; }
|
toString: function() { return "ERROR"; }
|
||||||
}
|
}
|
||||||
}), "thing 1 'cheese'");
|
}), "thing 1 cheese");
|
||||||
},
|
},
|
||||||
'should output the first item even if it is not a string': function(layout) {
|
'should output the first item even if it is not a string': function(layout) {
|
||||||
assert.equal(layout({
|
assert.equal(layout({
|
||||||
|
Loading…
Reference in New Issue
Block a user