首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在node js中更改log txt文件的颜色

如何在node js中更改log txt文件的颜色
EN

Stack Overflow用户
提问于 2020-11-26 21:37:39
回答 1查看 274关注 0票数 1

例如,像这样的东西。

代码语言:javascript
复制
console.log("text", "red");

如何在节点js中设置log txt文件的字体颜色。我已经在终端中这样做了,但我想在日志txt文件中做同样的事情。是否可以像在终端中一样在日志txt文件中为不同的消息显示不同的颜色。

EN

回答 1

Stack Overflow用户

发布于 2020-11-26 23:05:02

如何在命令行上获取颜色

当在命令行上工作时,对输出进行着色既有趣又非常有用。要对控制台输出进行着色,您需要使用ANSI转义代码。在npm上提供的模块colors.js提供了一个极其易于使用的包装器,使得添加颜色变得轻而易举。

首先,将其安装到您要在其中工作的目录。

代码语言:javascript
复制
npm install colors

现在为自己打开一个小测试脚本,并尝试如下所示:

代码语言:javascript
复制
const colors = require('colors');

const stringOne = 'This is a plain string.';
const stringTwo = 'This string is red.'.red;
const stringThree = 'This string is blue.'.blue;
const today = new Date().toLocaleDateString(); // returns today's date in mm/dd/yyyy format

console.log(stringOne.black.bgMagenta);
console.log(stringOne.yellow.bgRed.bold);
console.log(`Today is: ${today}`.black.bgGreen);

console.log(stringTwo);
console.log(stringThree);

console.log(stringTwo.magenta);
console.log(stringThree.grey.bold);

这里有几件事需要注意--首先,string对象已经被原型化了,所以只需向string添加属性就可以添加任何颜色!它适用于字符串文字、模板文字和变量,如上面示例的顶部所示。

还要注意,在第二对console.log语句中,设置后,颜色值将作为字符串的一部分持久存在。这是因为在引擎盖下,适当的ANSI颜色标签已经预先添加,并根据需要附加-在传递字符串的任何地方,也支持ANSI颜色代码,颜色将保持不变。

最后一对console.log语句可能是最重要的。由于colors.js和ANSI颜色代码的工作方式,如果在一个字符串上设置了多个颜色属性,则只有第一个在该字符串上设置的颜色属性生效。这是因为颜色的作用是“状态转移”,而不是标签。

让我们来看一个更明确的例子。如果使用colors.js设置以下属性:

代码语言:javascript
复制
myString.red.blue.green

你可以想象你的终端对它自己说,“把这个变成绿色。不,把这个变成蓝色。不,把这个变成红色。现在不再有颜色代码了?那就是红色。”以相反的顺序读取代码,并应用最后一个/“最里面”。如果您使用的库设置了自己不喜欢的默认颜色,这可能非常有用-如果您自己在传递给库的字符串上设置颜色代码,它将取代其他作者的颜色代码。

最后要注意的是示例脚本的最后一行。虽然之前设置了颜色代码,但没有设置“粗体”代码,因此示例被设置为粗体,但没有被赋予不同的颜色。

在不更改String.prototype的情况下使用颜色现在也可以使用颜色的实例。虽然这种方法不太好用,但它对初学者很友好,如果你不想接触String.prototype,它特别有用。下面是一些这样的例子:

代码语言:javascript
复制
const colors = require('colors');

const stringOne = 'This is a plain string.';
const stringTwo = 'This string is red.';
const stringThree = 'This string is blue.';
const today = new Date().toLocaleDateString(); // returns today's date in mm/dd/yyyy format

console.log(colors.bgMagenta.black(stringOne));
console.log(colors.bold.bgRed.yellow(stringOne));
console.log(colors.bgGreen.black(`Today is: ${today}`));

console.log(colors.red(stringTwo));
console.log(colors.blue(stringThree));

console.log(colors.magenta.red(stringTwo));
console.log(colors.bold.grey.black.blue(stringThree));

与String.prototype方法不同,colors实例上的链接方法是从左到右执行的,即最后应用最接近字符串的方法。在最后一个console.log中,你可以想象你的终端对自己说,“把这个变成灰色。现在,把这个变成黑色。现在,把这个变成蓝色。现在没有更多的着色方法了?那就是蓝色。”

使用最新版本的colors.js,您还可以在color.js中定义自定义主题,这使得我们的代码更健壮,并允许更好地封装数据。这可能是一个很好的用例:

代码语言:javascript
复制
var colors = require('colors');

colors.setTheme({
  info: 'bgGreen',
  help: 'cyan',
  warn: 'yellow',
  success: 'bgBlue',
  error: 'red'
});

// outputs red text
console.log("this is an error".error);

// outputs text on blue background
console.log("this is a success message".success);

最后一件事:颜色在不同的终端上可能看起来非常不同-有时,粗体是粗体,有时只是不同的颜色。尝试一下,自己去看看吧!

作为参考,下面是可用的colors.js属性的完整列表。

文本颜色

  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white
  • gray
  • grey

背景颜色

  • bgBlack
  • bgRed
  • bgGreen
  • bgYellow
  • bgBlue
  • bgMagenta
  • bgCyan
  • bgWhite

样式

  • reset
  • bold
  • dim
  • italic
  • underline
  • inverse
  • hidden
  • strikethrough
  • extras
  • rainbow
  • zebra
  • america
  • trap
  • random
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65023151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档