Привет! Я запускаю проект кластерного узла с несколькими узлами. Они неплохо выводят на консоль. Я также хочу иметь возможность делать красивый цветной вывод.
Моя проблема: я получаю путаницу, консольный вывод состояния гонки-y ТОЛЬКО ПРИ ИСПОЛЬЗОВАНИИ ЦВЕТОВ.
Я излагал все, чтобы изолировать свою проблему, и моя текущая установка такова, что каждый узел в кластере должен иметь свою собственную уникальную строку. Это единственная строка, которую узел выводит на консоль.
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 (красивый сторонний терминал Windows, показанный на снимках экрана), она НЕ существует в терминале Cygwin! В Cygwin никогда не бывает путаницы, даже с тоннами цветов и асинхронным выводом. Могу ли я что-нибудь сделать, чтобы поощрить такое поведение Cygwin на других консолях?