Как изменить цвет файла log txt в узле js

#node.js #logging #logfile

#node.js #ведение журнала #файл журнала

Вопрос:

например, что-то вроде этого.

 console.log("text", "red");
 

Как я могу установить цвет шрифта файла log txt в узле js. Я сделал это в терминале, но хочу сделать то же самое в файле log txt.
возможно ли показать другой цвет для другого сообщения в файле log txt, как в терминале.

Ответ №1:

Как получить цвета в командной строке

При работе в командной строке раскрашивать свои выходные данные может быть как забавно, так и чрезвычайно полезно. Чтобы раскрасить вывод на консоль, вам необходимо использовать escape-коды ANSI. Модуль colors.js , доступный в npm, предоставляет чрезвычайно простую в использовании оболочку, которая упрощает добавление цветов.

Сначала установите его в каталог, в котором вы хотите работать.

 npm install colors
 

Теперь откройте для себя небольшой тестовый скрипт и попробуйте что-то вроде этого:

 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 был создан прототипом, поэтому любой цвет может быть добавлен просто путем добавления свойства к строке! Он работает со строковыми литералами, литералами шаблонов и переменными, как показано в верхней части примера выше.

Обратите внимание, также, со второй пары консоли.операторы журнала, которые после установки значение цвета сохраняется как часть строки. Это связано с тем, что под капотом были добавлены соответствующие цветовые теги ANSI и добавлены по мере необходимости — везде, где передается строка, где также поддерживаются цветовые коды ANSI, цвет останется.

Последняя пара консоли.операторы журнала, вероятно, самые важные. Из-за способа colors.js и цветовые коды ANSI работают, если для строки задано более одного свойства цвета, вступает в силу только первое свойство цвета, которое должно быть установлено для строки. Это связано с тем, что цвета функционируют как «сдвиги состояния», а не как теги.

Давайте рассмотрим более наглядный пример. Если вы установите следующие свойства с colors.js:

 myString.red.blue.green
 

Вы можете представить, что ваш терминал говорит сам себе: «Сделайте это зеленым. Нет, сделайте это синим. Нет, сделайте это красным. Теперь больше нет цветовых кодов? Тогда это красный. » Коды считываются в обратном порядке, и применяется последний / самый внутренний. Это может быть чрезвычайно полезно, если вы используете библиотеку, которая устанавливает свои собственные цвета по умолчанию, которые вам не нравятся — если вы сами задаете цветовой код в строке, которую передаете в библиотеку, он заменит цветовой код (ы) другого автора.

Последнее, на что следует обратить внимание, это последняя строка примера скрипта. В то время как код цвета был установлен ранее, код ‘bold’ не был, поэтому пример был выделен жирным шрифтом, но не другим цветом.

Использование цветов без изменения String.prototype Теперь также можно использовать экземпляр colors . Хотя этот подход немного менее изящен, но удобен для начинающих и особенно полезен, если вы не хотите касаться String.prototype. Вот некоторые примеры этого:

 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 выполняются слева направо, т. Е. В конечном итоге применяется метод, ближайший к строке. В последней консоли.журнал вы можете представить, что ваш терминал говорит сам себе: «Сделайте это серым. Теперь сделайте это черным. Теперь сделайте это синим. Теперь больше нет методов раскраски? Тогда это синий. »

С последней версией colors.js вы также можете определить пользовательские темы в color.js , что делает наш код более надежным и позволяет лучше инкапсулировать данные. Возможно, это хороший вариант использования:

 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 свойства.

цвета текста

  • Черный
  • красный
  • Зеленый
  • Желтый
  • Синий
  • пурпурный
  • голубой
  • Белый
  • серый
  • Серый

цвета фона

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

стили

  • Сброс
  • жирный
  • тусклый
  • курсив
  • подчеркивание
  • обратное
  • скрытый
  • зачеркивание
  • дополнительно
  • радуга
  • zebra
  • америка
  • ловушка
  • Случайный

Комментарии:

1. Я сделал это в терминале, но хочу сделать то же самое в файле log txt. ошибка, информация, отладка другого цвета для другого сообщения в файле журнала. Возможно ли сделать файл log txt таким.