вывод в консоль console.log из шаблонной строки с сохранением форматирования объектов

В своем программирование на node.js в процессе первых набросок кода, в качестве быстрого тестирования я часто использую для вывода информации в консоль console.log(). Я использую среду VSCode.

Пример (придуманный):

console.log('TEST_ORDERBOOB10')
console.log(initialGate.messageObj.time, 'onmessage Gate');
console.log(initialGate.messageObj.time, initialGate.messageObj.time);
console.log(initialGate.messageObj, initialGate.messageObj);
console.log(initialGate.messageObj.result, initialGate.messageObj.time);
console.log('| Time OUT 5 min test');

Я хочу упростить, укоротить такого рода код. пробовал с помощью шаблонных строк:

console.log(`TEST_ORDERBOOB10
        ${initialGate.messageObj.time}onmessage Gate
        initialGate.messageObj.time = ${initialGate.messageObj.time}
        initialGate.messageObj = ${initialGate.messageObj}
        initialGate.messageObj.result =${initialGate.messageObj.time}
        |Time OUT 5 min test`);

Тогда отсутствует форматирование данных в ${ }. А объекты отображаются как : [object Object] . т.е. объекты переводятся в строки. К тому же VSCode свое форматирование и оно передается в шаблонную строку в виде нескольких пробелов в начале строк.

Но я хочу сохранить форматирование как в обычном console.log() и при этом писать такой текст в шаблонной строке и на выходе избавится от пробелов в начале строк.

Попробовал использовать теговые шаблоны:

function consoleLogGroup(strings, ...expressions) {
  console.log(strings);
  function trimMy(str) { return str.split('\n').map((item) => item.trim()).join('\n') } 
  expressions.forEach((value, i) => {
    if (i === expressions.length - 1) {
      console.log(trimMy(strings[i]), value, trimMy(strings[strings.length - 1]));
    }
    else console.log(trimMy(strings[i]), value);
  })
}

consoleLogGroup`TEST_ORDERBOOB10
        ${initialGate.messageObj.time}onmessage Gate
        initialGate.messageObj.time = ${initialGate.messageObj.time}
        initialGate.messageObj = ${initialGate.messageObj}
        initialGate.messageObj.result =${initialGate.messageObj.time}
        |Time OUT 5 min test`;

Получаю вывод в консоль:

TEST_ORDERBOOB10
 1631785575
onmessage Gate
initialGate.messageObj.time = 1631785575

initialGate.messageObj = {
  time: 1631785575,
  channel: 'spot.order_book',
  event: 'update',
  result: {
    t: 1631785575531,
    lastUpdateId: 2088519752,
    s: 'XRP_USDT',
  }
}

initialGate.messageObj.result = 1631785575
|Time OUT 5 min test

Таким способом я убрал пробелы в начале строки и вывожу объекты в форматированном виде. Но присутствуют ненужные переходу на новую строку. Они получаются ввиду того, что сам console.log() внутри моей функции consoleLogGroup() переносит на новую строку.

Может быть я что-то упускаю и решение моей задачи гораздо проще?

Можно ли наследоваться от класса console и убрать из него перенос на новую строку?

Или мне пытаться усложнить алгоритм так, чтобы он понимал какие именно данные из массивов “strings” и “expressions” находятся в каждой строке?


Ответы (0 шт):