вывод в консоль 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” находятся в каждой строке?