Нello!Я запускаю проект кластеризованных узлов с несколькими узлами.Они делают довольно много консольного вывода.Я также хочу иметь возможность делать красивые цветные выводы.
Моя проблема: я получаю путаницу, вывод на консоль гонки-состояния-ТО ТОЛЬКО ПРИ ИСПОЛЬЗОВАНИИ ЦВЕТА.
Я кипятилсявсе, чтобы изолировать мою проблему, и мои текущие настройки для каждого узла в кластере иметь свою собственную уникальную строку.Это единственная строка, которую узел выводит на консоль.
let chars = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let getMyUniqueString = () => {
return chars[Math.floor(Math.random() * chars.length)].repeat(100);
};
Я запускаю группу узлов, которые используют эту функцию, чтобы определить их уникальные строки, и я вижу что-то вроде следующего:
Разве это не прекрасно!Независимо от того, как долго и как яростно выводятся все эти узлы, этот вывод консоли никогда не перемешивается.
Теперь я пытаюсь использовать уникальные строки, которые содержат лишь небольшой кусочек цвета:
let chars = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let getMyUniqueString = () => {
let redEscSeq = '\x1b[41m';
let clearEscSeq = '\x1b[0m';
let aRedBoxOfText = redEscSeq + ' ' + clearEscSeq;
let repeatedChars = chars[Math.floor(Math.random() * chars.length)].repeat(100);
return aRedBoxOfText + repeatedChars;
};
И посмотрите, как печально выглядят некоторые из моих результатов!
ЕДИНСТВЕННЫЙ способ передачи данных на терминал через все узлы - через console.log
функция.
Почему console.log
достаточно умен, чтобы сохранить вывод многих узлов без искажений, когда нет цвета, но недостаточно умен, чтобы делать это, когда даже немного цвета включено?
Спасибо за любую помощь!
(Просто для справки, следующее изображение - это вид не перепутанного вывода, который я ожидаю увидеть последовательно в цветном корпусе; это просто красное поле (два пробела скрасный цвет фона) с префиксом каждой строки:)
РЕДАКТИРОВАТЬ: хотя эта проблема существует в консоли Windows «cmd.exe», в PowerShellконсоль, и в ConEmu (хороший сторонний windoтерминал ws показан на скриншотах), он не существует в терминале Cygwin!В Cygwin никогда не бывает помех, даже с тоннами цветов и асинхронным выходом.Что я могу сделать, чтобы поощрить это поведение Cygwin в других консолях ??