Winston 3.0 раскрасить весь вывод на консоли - PullRequest
0 голосов
/ 24 июня 2018

Я постараюсь быть кратким и кратким с моей просьбой!

Я занимаюсь разработкой приложения NodeJS, используя babel-cli в качестве транспортера ES6, и я использую Winston 3.0 в качестве службы журналирования.

Вопрос:

Я хочу, чтобы весь вывод сообщений из регистратора Winston отображался в цвете, не только метка и сообщение, но и временная метка. Я знаю, что в Winston 2.x это было возможно несколькими способами (хотя я не знаю, как).

Я уже пробовал разные пакеты NPM, такие как winston color и winston-console-formatter , но, похоже, они не работают.

Я определил свой логгер следующим образом:

    import winston from 'winston'

    let alignColorsAndTime = winston.format.combine(
        winston.format.colorize({
            all:true
        }),
        winston.format.label({
            label:'[LOGGER]'
        }),
        winston.format.timestamp({
            format:"YY-MM-DD HH:MM:SS"
        }),
        winston.format.printf(
            info => ` ${info.label}  ${info.timestamp}  ${info.level} : ${info.message}`
        )
    );

    export const logger = winston.createLogger({
        level: "debug",
        transports: [
            new (winston.transports.Console)({
                format: alignColorsAndTime
            })
        ],
    });

Тем не менее вывод выглядит примерно так: Нажмите для изображения

Хотя я бы предпочел, чтобы это выглядело так: Нажмите для изображения

Если у кого-нибудь из вас есть идеи, как это исправить, я был бы очень признателен. Спасибо:)

1 Ответ

0 голосов
/ 04 октября 2018

Попробуйте с кодом ниже.Это будет сочетать в себе оба форматирования.Меня устраивает.

export const logger = winston.createLogger({
    level: "debug",
    transports: [
        new (winston.transports.Console)({
            format: winston.format.combine(winston.format.colorize(), alignColorsAndTime)
        })
    ],
});

Обратите внимание, что отступы должны соответствовать цвету.Пример:

const padding= info.level.length <= 7?7:17;  //padding differently if it has colour.
${info.level.padEnd(padding,' ')}

Протестировано с:

"winston": "^3.1.0"
...