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'));
答案 0 :(得分:3)
Morgan接受一个可选参数stream。
默认情况下,它指向控制台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); } }}));
答案 1 :(得分:1)
结合使用摩根ˋstreamˋ和ˋdebugˋ时,最好这样做:
app.use(morgan('combined', { stream: { write: msg => info(msg.trimEnd()) } }));
原因:当调用stream.write(...)
函数时,摩根在味精的末尾添加新行。