Я использую пакет google-cloud / logging-winston nodejs для ведения журнала, и я создал свой собственный форматировщик для вывода следующим образом:
const winston = require('winston');
const { LoggingWinston } = require('@google-cloud/logging-winston');
const { format } = winston;
const { combine, label, json, timestamp, printf, colorize, simple } = format;
const path = require('path');
const customFormats = (category) => combine(
label({label: category}),
colorize({all: true}),
// simple()
timestamp(),
json(),
printf((info) => `${info.timestamp} - [${info.label?`${info.label}`:"NO_LABEL"}] - [${info.level}] : ${info.message}`));
Он регистрирует, как и ожидалось, но при просмотре в облачной консоли Google перед и после сообщений журнала появляются забавные символы. Ниже приведены несколько примеров журнала:
2021-01-16T10:58:00.836Z - [DEFAULT] - [[32minfo[39m] : [32mValidating route @/bills/airtime/send[39m
2021-01-16T10:58:00.841Z - [AIRTIME] - [[31merror[39m] : [31mAirtime recharge error Low account balance[39m
Я не знаю, что они означают: [32 м, [31 м или [39 м], но они затрудняют чтение моих журналов.
Эти символы называются escape-кодами ANSI или escape-последовательностями. Они используются для изменения способа отображения текста терминалами. Например, чтобы изменить цвет или выделить текст жирным шрифтом. Это может улучшить внешний вид сообщений на терминале, но затруднит обработку файлов журнала.
Эти символы добавляются не при ведении журнала Google Cloud, а посредством приложения или программного обеспечения регистратора в вашей системе.
escape-код ANSI
Если вы изучите пример кода в своем вопросе, обратите внимание на
label
иcolorize
. Эти функции генерируют escape-коды.Спасибо. Я закомментировал строку colorize ({all: true}), и эти символы исчезли. — person Joseph Utulu; 16.01.2021