mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
console: colorize console error and warn
prints console error in red and warn in yellow PR-URL: https://github.com/nodejs/node/pull/51629 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Ruy Adorno <ruy@vlt.sh> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
fe4e569759
commit
a833c9e0be
@ -8,6 +8,7 @@ const {
|
||||
ArrayIsArray,
|
||||
ArrayPrototypeForEach,
|
||||
ArrayPrototypePush,
|
||||
ArrayPrototypeSome,
|
||||
ArrayPrototypeUnshift,
|
||||
Boolean,
|
||||
ErrorCaptureStackTrace,
|
||||
@ -67,6 +68,7 @@ const {
|
||||
CHAR_LOWERCASE_N: kTraceInstant,
|
||||
CHAR_UPPERCASE_C: kTraceCount,
|
||||
} = require('internal/constants');
|
||||
const { styleText } = require('util');
|
||||
const kCounts = Symbol('counts');
|
||||
|
||||
const kTraceConsoleCategory = 'node,node.console';
|
||||
@ -273,7 +275,7 @@ ObjectDefineProperties(Console.prototype, {
|
||||
[kWriteToConsole]: {
|
||||
__proto__: null,
|
||||
...consolePropAttributes,
|
||||
value: function(streamSymbol, string) {
|
||||
value: function(streamSymbol, string, color = '') {
|
||||
const ignoreErrors = this._ignoreErrors;
|
||||
const groupIndent = this[kGroupIndent];
|
||||
|
||||
@ -288,6 +290,11 @@ ObjectDefineProperties(Console.prototype, {
|
||||
}
|
||||
string = groupIndent + string;
|
||||
}
|
||||
|
||||
if (color) {
|
||||
string = styleText(color, string);
|
||||
}
|
||||
|
||||
string += '\n';
|
||||
|
||||
if (ignoreErrors === false) return stream.write(string);
|
||||
@ -378,12 +385,15 @@ const consoleMethods = {
|
||||
log(...args) {
|
||||
this[kWriteToConsole](kUseStdout, this[kFormatForStdout](args));
|
||||
},
|
||||
|
||||
|
||||
warn(...args) {
|
||||
this[kWriteToConsole](kUseStderr, this[kFormatForStderr](args));
|
||||
const color = (shouldColorize(args) && 'yellow') || '';
|
||||
this[kWriteToConsole](kUseStderr, this[kFormatForStderr](args), color);
|
||||
},
|
||||
|
||||
error(...args) {
|
||||
const color = (shouldColorize(args) && 'red') || '';
|
||||
this[kWriteToConsole](kUseStderr, this[kFormatForStderr](args), color);
|
||||
},
|
||||
|
||||
dir(object, options) {
|
||||
this[kWriteToConsole](kUseStdout, inspect(object, {
|
||||
@ -681,6 +691,12 @@ const iterKey = '(iteration index)';
|
||||
|
||||
const isArray = (v) => ArrayIsArray(v) || isTypedArray(v) || isBuffer(v);
|
||||
|
||||
// TODO: remove string type check once the styleText supports objects
|
||||
// Return true if all args are type string
|
||||
const shouldColorize = (args) => {
|
||||
return lazyUtilColors().hasColors && !ArrayPrototypeSome(args, (arg) => typeof arg !== 'string');
|
||||
};
|
||||
|
||||
function noop() {}
|
||||
|
||||
for (const method of ReflectOwnKeys(consoleMethods))
|
||||
@ -689,7 +705,6 @@ for (const method of ReflectOwnKeys(consoleMethods))
|
||||
Console.prototype.debug = Console.prototype.log;
|
||||
Console.prototype.info = Console.prototype.log;
|
||||
Console.prototype.dirxml = Console.prototype.log;
|
||||
Console.prototype.error = Console.prototype.warn;
|
||||
Console.prototype.groupCollapsed = Console.prototype.group;
|
||||
|
||||
function initializeGlobalConsole(globalConsole) {
|
||||
|
@ -770,6 +770,7 @@ const errorTests = [
|
||||
'Object [console] {',
|
||||
' log: [Function: log],',
|
||||
' warn: [Function: warn],',
|
||||
' error: [Function: error],',
|
||||
' dir: [Function: dir],',
|
||||
' time: [Function: time],',
|
||||
' timeEnd: [Function: timeEnd],',
|
||||
@ -785,7 +786,6 @@ const errorTests = [
|
||||
/ {2}debug: \[Function: (debug|log)],/,
|
||||
/ {2}info: \[Function: (info|log)],/,
|
||||
/ {2}dirxml: \[Function: (dirxml|log)],/,
|
||||
/ {2}error: \[Function: (error|warn)],/,
|
||||
/ {2}groupCollapsed: \[Function: (groupCollapsed|group)],/,
|
||||
/ {2}Console: \[Function: Console],?/,
|
||||
...process.features.inspector ? [
|
||||
|
@ -1,3 +1,3 @@
|
||||
|
||||
(node:*) Warning: The 'NODE_DISABLE_COLORS' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `* --trace-warnings ...` to show where the warning was created)
|
||||
*(node:*) Warning: The 'NODE_DISABLE_COLORS' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `* --trace-warnings ...` to show where the warning was created)*
|
||||
|
@ -1,3 +1,3 @@
|
||||
|
||||
(node:*) Warning: The 'NODE_DISABLE_COLORS' and 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `* --trace-warnings ...` to show where the warning was created)
|
||||
*(node:*) Warning: The 'NODE_DISABLE_COLORS' and 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `* --trace-warnings ...` to show where the warning was created)*
|
||||
|
@ -1,2 +1,2 @@
|
||||
(node:*) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `* --trace-warnings ...` to show where the warning was created)
|
||||
*(node:*) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `* --trace-warnings ...` to show where the warning was created)*
|
||||
|
Loading…
Reference in New Issue
Block a user