Морган не использует цвета в распечатке консоли - PullRequest
1 голос
/ 27 марта 2019

Есть ли ограничение или правило, как вы должны настраивать / определять morgan, чтобы он по-прежнему соблюдал заданную цветовую схему?в настоящее время у меня есть следующие настройки Моргана.

morgan.token('date', (req, res, tz) => {
  return moment().tz(tz).format();
})

morgan.format('myformat', '[:date[America/Los_Angeles]][:remote-addr] ":method :url" :status :res[content-length] - :response-time ms')

app.use(morgan('myformat', function (tokens, req, res) {
  return chalk.blue(tokens.method(req, res))
    + ' ' + chalk.green(tokens.url(req, res))
    + ' ' + chalk.red(tokens['response-time'](req, res))
}))

, когда я использую

app.use(morgan( function (tokens, req, res) {
  return chalk.blue(tokens.method(req, res))
    + ' ' + chalk.green(tokens.url(req, res))
    + ' ' + chalk.red(tokens['response-time'](req, res))
}))

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

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Я полагаю, вы неправильно вызываете функцию morgan.

Согласно документам :

morgan(format, options)

Создать новую функцию промежуточного программного обеспечения для morgan logger, используя заданный формат и варианты. Аргументом формата может быть строка с предопределенным именем (имена см. ниже), строка строки формата или функция это приведет к записи в журнале.

Функция форматирования будет вызываться с тремя аргументами tokens, req, и res ...

Поэтому, когда вы звоните:

app.use(morgan('myformat', function (tokens, req, res) {
  return chalk.blue(tokens.method(req, res))
    + ' ' + chalk.green(tokens.url(req, res))
    + ' ' + chalk.red(tokens['response-time'](req, res))
}))

Второй аргумент (функция) не делает то, что вам нужно, потому что Морган считает, что это аргумент options. Единственный способ добиться того, чего вы хотите - это объявить порядок токенов и их цвета внутри функции, которую вы передаете morgan, как они показывают в примере :

const loggerMiddleware = morgan(function (tokens, req, res) {
    return [
        '[' + tokens['date'](req, res) + ']',
        '[' + tokens["remote-addr"](req, res) + ']',
        '"' + chalk.blue(tokens["method"](req, res)) + chalk.green(tokens["url"](req, res)) + '"',
       // add more tokens here...
    ].join(' ')
});

app.use(loggerMiddleware);
0 голосов
/ 10 апреля 2019

Благодаря указателям OzW я смог заставить его работать с приведенным ниже кодом и передать определение формата, которое я использовал ранее.Работает как шарм со всеми желаемыми цветами.

app.use(morgan( function (tokens, req, res) {

  return chalk.yellow(moment().tz("America/Los_Angeles").format('ddd, DD MMM YYYY HH:mm:ss.SSS Z z'))
    + ' ' + chalk.blue(tokens['remote-addr'](req, res))
    + ' ' + chalk.cyanBright(tokens.method(req, res))
    + ' ' + chalk.green(tokens.url(req, res))
    + ' ' + chalk.magentaBright(tokens.status(req, res))
    + ' ' + chalk.red(tokens['response-time'](req, res))
}))
...