如何以彩色获取node.js console.error和console.warn输出

时间:2018-05-30 15:19:51

标签: node.js

有没有办法让node.js以彩色输出console.error和console.warn消息?

我希望我可以将所有console.error消息设置为红色,将console.warn消息设置为黄色,将console.log消息设置为默认颜色。

我四处寻找node.exe的命令行参数或环境变量选项,但我没有看到任何内容。也许彩色的控制台消息是我必须以不同的方式选择的?

我想要一个适用于Windows 10的解决方案,以防万一。

2 个答案:

答案 0 :(得分:2)

您可以使用颜色包。

https://www.npmjs.com/package/colors

只需使用包装器来完成格式化的方式

module.exports = {
  error: message => console.log(message.red),
  warn: message => console.log(message.yellow),
}

您还可以使用像pino这样的日志库来着色消息中的日志级别。

https://github.com/pinojs/pino

编辑:显示基本的记录器文件实现

my-custom-logger.js

module.exports = {
  error: message => console.log(message.red),
  warn: message => console.log(message.yellow),
  info: message => console.log(message.green),
  debug: message => console.log(message.blue),
};

一些-file.js

const logger = require('./my-custom-logger);

logger.error('Something went very wrong');
logger.warn('I am just a warning');
logger.info('This is informational');
logger.debug('Let us dig a little deeper');

将其隐藏在自己的my-custom-logger.js文件后面的好处是,您可以在不更改所有代码的情况下替换幕后实现。

我强烈建议深入研究pino,bunyan或winston作为日志框架。有很多好处,但我认为最大的两个好处是:

  1. 提高/降低日志级别以控制日志记录的详细程度的能力
  2. 以JSON格式打印对象而不使用JSON.stringify(object)

答案 1 :(得分:0)

您可以将console中的方法设置为调用基础方法(您需要存储)的包装函数,但将它们换成颜色。

请注意,您也可以将对象传递给console方法,这些方法难以处理。

const actualError = console.error;

console.error = function(...args) {
  actualError(...args.map(a => typeof a === 'string' ? colorize(a) : a);
};