console: Support formatting options in trace()

Fix #4589
This commit is contained in:
isaacs 2013-01-17 16:02:41 -08:00
parent 14c911de77
commit 539bf1d7b7
2 changed files with 8 additions and 4 deletions

View File

@ -85,12 +85,12 @@ Console.prototype.timeEnd = function(label) {
};
Console.prototype.trace = function(label) {
Console.prototype.trace = function() {
// TODO probably can to do this better with V8's debug object once that is
// exposed.
var err = new Error;
err.name = 'Trace';
err.message = label || '';
err.message = util.format.apply(this, arguments);
Error.captureStackTrace(err, arguments.callee);
this.error(err.stack);
};

View File

@ -43,13 +43,17 @@ console.log('foo', 'bar');
console.log('%s %s', 'foo', 'bar', 'hop');
console.log({slashes: '\\\\'});
console._stderr = process.stdout;
console.trace('This is a %j %d', { formatted: 'trace' }, 10, 'foo');
global.process.stdout.write = stdout_write;
assert.equal('foo\n', strings.shift());
assert.equal('foo bar\n', strings.shift());
assert.equal('foo bar hop\n', strings.shift());
assert.equal("{ slashes: '\\\\\\\\' }\n", strings.shift());
process.stderr.write('hello world');
assert.equal('Trace: This is a {"formatted":"trace"} 10 foo',
strings.shift().split('\n').shift());
assert.throws(function () {
console.timeEnd('no such label');