Winston не красиво печатает консоль

Я пытаюсь заставить Winston красиво печатать на консоли, поэтому я застрял в файле и запустил его с помощью node:

var winston = require('winston');
winston.cli();
winston.data({
  a: "test",
  of: "many",
  properties: {
    like: "this"
  }
});
winston.data('data', {
  a: "test",
  of: "many",
  properties: {
    like: "this"
  }
});

Терминал вернет следующие (не совсем красивые) сообщения:

data:     a=test, of=many, like=this
data:    data a=test, of=many, like=this

Я следую инструкциям Winston Readme ( "Использование winston в инструменте CLI" ). Я что-то неправильно понял? Где-то отсутствует настройка?

Ответы

Ответ 1

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

например:.

var winston = require('winston');
var logger = new (winston.Logger)({
  levels: {
    trace: 0,
    input: 1,
    verbose: 2,
    prompt: 3,
    debug: 4,
    info: 5,
    data: 6,
    help: 7,
    warn: 8,
    error: 9
  },
  colors: {
    trace: 'magenta',
    input: 'grey',
    verbose: 'cyan',
    prompt: 'grey',
    debug: 'blue',
    info: 'green',
    data: 'grey',
    help: 'cyan',
    warn: 'yellow',
    error: 'red'
  }
});

logger.add(winston.transports.Console, {
  level: 'trace',
  prettyPrint: true,
  colorize: true,
  silent: false,
  timestamp: false
});

logger.add(winston.transports.File, {
  prettyPrint: false,
  level: 'info',
  silent: false,
  colorize: true,
  timestamp: true,
  filename: './nKindler.log',
  maxsize: 40000,
  maxFiles: 10,
  json: false
});

Ответ 2

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

winston.addColors({
  silly: 'magenta',
  debug: 'blue',
  verbose: 'cyan',
  info: 'green',
  warn: 'yellow',
  error: 'red'
});

winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
  level: process.env.LOG_LEVEL,
  prettyPrint: true,
  colorize: true,
  silent: false,
  timestamp: false
});