Winston: Журнал консоли не окрашен.

Созданный на 10 нояб. 2017  ·  22Комментарии  ·  Источник: winstonjs/winston

Я пытаюсь раскрасить вывод консоли, и это не работает. На выходе все одного (белого) цвета. У меня 3.0.0-rc1.

const winston = require('winston');
const logLevels = {
  levels: {
    error: 0,
    warn: 1,
    info: 2,
    http: 3,
    sql: 4,
    debug: 5
  },
  colors: {
    error: "red",
    warn: "darkred",
    info: "black",
    http: "green",
    sql: "blue",
    debug: "gray"
  }
};
winston.addColors(logLevels);
const logger = winston.createLogger({...});
logger.add(new winston.transports.Console({colorize: true}));

Я также пробовал предложение здесь , но это тоже не работает:

logger.add(new winston.transports.Console({format: winston.format.combine(formatter, winston.format.colorize())}));

Спасибо,
Альваро

Самый полезный комментарий

Я смог заставить его частично работать, используя документацию для logform .

  const alignedWithColorsAndTime = winston.format.combine(
    winston.format.colorize(),
    winston.format.timestamp(),
    winston.format.align(),
    winston.format.printf(info => `${info.timestamp} [${info.level}]: ${info.message}`),
  );

Не уверен, как обрабатывать дамп аргументов JSON.

Обновление вот что я разработал:

  const alignedWithColorsAndTime = winston.format.combine(
    winston.format.colorize(),
    winston.format.timestamp(),
    winston.format.align(),
    winston.format.printf((info) => {
      const {
        timestamp, level, message, ...args
      } = info;

      const ts = timestamp.slice(0, 19).replace('T', ' ');
      return `${ts} [${level}]: ${message} ${Object.keys(args).length ? JSON.stringify(args, null, 2) : ''}`;
    }),
  );

screen shot 2017-11-13 at 10 55 05 am

Все 22 Комментарий

Я смог заставить его частично работать, используя документацию для logform .

  const alignedWithColorsAndTime = winston.format.combine(
    winston.format.colorize(),
    winston.format.timestamp(),
    winston.format.align(),
    winston.format.printf(info => `${info.timestamp} [${info.level}]: ${info.message}`),
  );

Не уверен, как обрабатывать дамп аргументов JSON.

Обновление вот что я разработал:

  const alignedWithColorsAndTime = winston.format.combine(
    winston.format.colorize(),
    winston.format.timestamp(),
    winston.format.align(),
    winston.format.printf((info) => {
      const {
        timestamp, level, message, ...args
      } = info;

      const ts = timestamp.slice(0, 19).replace('T', ' ');
      return `${ts} [${level}]: ${message} ${Object.keys(args).length ? JSON.stringify(args, null, 2) : ''}`;
    }),
  );

screen shot 2017-11-13 at 10 55 05 am

Через два часа мне удалось заставить цвета работать, спасибо @Xeoncross !

запустил винстон и тоже получил консоль без цветов...
я использовал следующий код определения транспорта:

new winston.transports.Console({
  format: winston.format.simple()
})

после прочтения этой темы сделал так:

new winston.transports.Console({
  format: winston.format.combine(
            winston.format.simple(),
            winston.format.colorize()
          )
})

и не получил никакой разницы.
поэтому я изменил положение формата раскраски на 1-е, и цвета заработали.

new winston.transports.Console({
  format: winston.format.combine(
            winston.format.colorize(),
            winston.format.simple()
          )
})

Спасибо @abrakadobr ! это помогло.

у меня здесь ничего не сработало, по-прежнему нет цветов, а смещение раскраски вверх привело к тому, что информационное поле регистрировало закодированные строки

Я создал суть , которая показывает, как использовать ведение журнала Winston & Morgan в простом приложении ExpressJS.

Спасибо @Xeoncross! Добавление winston.format.colorize() в мой формат сработало. Интересно, что этого нет в документах. Или, по крайней мере, я не мог найти его в документах.

Мне нравится новая гибкость, но я надеюсь, что она получит лучшую документацию. Я просто потратил слишком много времени, чтобы заставить это работать. Пример plug-n-play для тех из нас, кто использовал winston.cli() , имел бы большое значение, что-то похожее на пример @Xeoncross.

Кто-нибудь знает, как это сделать с текущей версией релиза? Версия кандидата на выпуск не является вариантом.

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

colorize({ all: true })

@markhealey Я уже удалил зависимость winston из моего package.json, а затем прочитал ваше сообщение. Спасибо :+1:

Спасибо @Xeoncross. Взгляните на: https://github.com/winstonjs/logform/blob/master/timestamp.js . Вы можете отформатировать временную метку с параметром format opt. Но будьте осторожны с часовым поясом

format.combine(
    format.colorize(),
    format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
    format.align(),
    format.printf(info => {
        const { timestamp, level, message, ...extra } = info;

        return `${timestamp} [${level}]: ${message} ${
            Object.keys(extra).length ? JSON.stringify(extra, null, 2) : ''
        }`;
    }),
)

format.colorize({all:true} на самом деле не работает, если включена метка времени, вот рабочий пример, чтобы раскрасить всю строку:

const colorizer = winston.format.colorize();

const logger = winston.createLogger({
  level: 'debug',
  format: combine(
    winston.format.timestamp(),
    winston.format.simple(),
    winston.format.printf(msg => 
      colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
    )
  ),
  transports: [
    new transports.Console(),
  ]

});

проверить мой полнофункциональный регистратор

Спасибо @abrakadobr , ваше решение сработало для меня.

@tommuhm Теперь я вижу дефект. Для colorize нет встроенной опции формата, если вы действительно хотите раскрасить весь printf . Имеет ли это смысл для вас?

const { createLogger, format, transports } = require('../');

const logger = createLogger({
  level: 'debug',
  format: format.combine(
    format.timestamp(),
    format.simple(),
    format.printf(info => `${info.timestamp} - ${info.level}: ${info.message}`),
    format.colorize({ all: true })
  ),
  transports: [
    new transports.Console(),
  ]
});

logger.error('wowza');

Хитрость заключается в том, что colorizer известен, когда info был "сериализован" (т.е. когда info[MESSAGE] был установлен в строку). Последующий PR до logform ближайшее время — спасибо, что покопались в этом!

@Xeoncross мы также можем добиться того же гораздо более простым способом.

const { createLogger, format, transports } = require('winston');
const { combine, timestamp, colorize, printf } = format;

const level = process.env.LOG_LEVEL || 'debug';

const myFormat = printf(({ level, message, label, timestamp }) => {
    return `${timestamp} ${level}: ${message}`;
});

const logger = createLogger({
    format: combine(colorize(), timestamp(), myFormat),
    transports: [new transports.Console()]
});

ссылка: https://www.npmjs.com/package/winston#using-custom-logging-levels

Я использую winston для входа в облачные часы и пытаюсь добавить цвет, но вместо цветных символов появляются .. Я пробую все решения, упомянутые выше. ниже мой код

const winston = require('winston');
const {transports, format, createLogger  } = winston;
const { combine,errors,timestamp} = format;

const colorizer = winston.format.colorize();


const logger = createLogger({
    level:  process.env.LOG_LEVEL,
    prettyPrint : true,
    format: combine(
        winston.format.timestamp(),
        winston.format.simple(),
        winston.format.printf(msg =>
            colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
        )
    ),
    transports: [
        new transports.Console()
    ]
});

module.exports = {logger};

а в консоли облачных часов вывод

[34m2019-08-22T13:00:03.325Z - debug: res by id: [
{
    "isActive": true,
    "value": "fNUMheWiwXayKsaYCbUeA7Gg7BtEPIUbakB56XH1",
    "id": "oehlwqlcve",
    "userId": "6b347b41-ddef-4842-83a0-1cd5ca358482"
}
][39m

это [39м появляется вместо цвета. Любое предложение?

-22T13:00:03.325Z - отладка: разрешение по id: [

У меня такая же проблема. Вам удалось это исправить?

-22T13:00:03.325Z - отладка: разрешение по id: [

У меня такая же проблема. Вам удалось это исправить?

Есть новости по этому поводу? Вы ее как-то решили?

@Xeoncross мы также можем добиться того же гораздо более простым способом.

const { createLogger, format, transports } = require('winston');
const { combine, timestamp, colorize, printf } = format;

const level = process.env.LOG_LEVEL || 'debug';

const myFormat = printf(({ level, message, label, timestamp }) => {
  return `${timestamp} ${level}: ${message}`;
});

const logger = createLogger({
  format: combine(colorize(), timestamp(), myFormat),
  transports: [new transports.Console()]
});

ссылка: https://www.npmjs.com/package/winston#using-custom-logging-levels

Это помогло мне в iTerm на MacOS

Ниже ссылка сработала для меня:
https://stackoverflow.com/questions/51012150/winston-3-0-colorize-whole-output-on-console

Была ли эта страница полезной?
0 / 5 - 0 рейтинги