merged util.format branch (fixes a lint error and simplifies the code)

This commit is contained in:
Gareth Jones 2013-06-05 08:52:07 +10:00
commit 41ddf5eea7
3 changed files with 12 additions and 34 deletions

2
.gitignore vendored
View File

@ -2,5 +2,5 @@
*.log?? *.log??
build build
node_modules node_modules
.bob/ .bob/
test/streams/test-rolling-file-stream*

View File

@ -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; } };
} else {
if (typeof format === "string") { return item;
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 {
//put it back, it's not a format string
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 = {

View File

@ -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({