Nodejs - Как использовать Морган с отладкой
Морган выводит запросы прямо на консоль.
Как я могу перенаправить их в отладочную версию npm, чтобы она соответствовала формату, который используется в других журналах?
мой debug.js
конфиг выглядит следующим образом:
import debug from 'debug';
const LOG_PREFIX = 'api';
const info = debug(`${LOG_PREFIX}:info`);
const dev = debug(`${LOG_PREFIX}:dev`);
const error = debug(`${LOG_PREFIX}:error`);
export {
info,
dev,
error,
};
И я в настоящее время регистрирую другие вещи, как:
import { info } from './debug';
info('App is up and running!');
Мой текущий вызов Моргана:
app.use(morgan('combined'));
1 ответ
Решение
Морган принимает необязательный параметр, который является потоком.
По умолчанию это указывает на process.stdout
консоль.
Так как он это называет stream.write
, вы можете легко создать быстрый поток, который перенаправляет на ваш debug
,
app.use(morgan('combined', { stream: { write: msg => info(msg) } }));
Обычно (но все же ES6) это будет:
import debug from 'debug';
const info = debug('info');
app.use(morgan('combined', { stream: { write: msg => info(msg) } }));
ES5:
var info = require('debug')('info');
app.use(morgan('combined', { stream: { write: function(msg) { info(msg); } }}));
При использовании morgan "stream" в сочетании с "debug" лучше всего сделать:
app.use(morgan('combined', { stream: { write: msg => info(msg.trimEnd()) } }));
Причина: Морган добавляет новую строку в конце сообщения при вызове stream.write(...)
функция.