Nodejs - 如何将 morgan 与调试一起使用



Morgan 将请求直接输出到控制台。

如何将它们重定向到 npm debug,以便它遵循与正在记录的其他内容相同的格式?

我的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'));

Morgan 接受一个可选参数,即流。

默认情况下,它指向 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()) } }));

原因是:morgan 在调用 stream.write(...) 函数时在 msg 末尾添加一个新行。

最新更新