为什么在一个项目中同时使用 `morgan` 和 `debug` 日志包

Max*_*kyi 8 node.js express

我刚刚从 express 生成器创建了一个应用程序,它使用两个记录器debugmorgan

/bin/www.js

const debug = require('debug')('myapp:server');
....
server.on('listening', onListening);
function onListening() {
    const addr = server.address();
    const bind = typeof addr === 'string'
        ? 'pipe ' + addr
        : 'port ' + addr.port;
    debug('Listening on ' + bind);
 --^^^^^^^--
}
Run Code Online (Sandbox Code Playgroud)

/app.js

var logger = require('morgan');
...
app.use(logger('dev'));
Run Code Online (Sandbox Code Playgroud)

为什么两者都用?不能只使用其中之一用于两种目的吗?

dvl*_*lsg 8

morgan是一个您通常作为中间件附加的库,然后它会在请求流经您的系统时自动记录信息,尤其是在时间方面。我不相信您通常会手动调用它来进行额外的日志记录。

debug是您需要手动添加的附加信息,这些信息morgan不一定知道或关心。您还可以debug通过在环境变量中使用正则表达式来打开和关闭日志记录,这对于将命名空间日志限制为您在调试问题时关心的日志非常有用。见这里

可以肯定的是,您可以使用debug相同的方式和相同的事情进行记录morgan,但是您必须手动完成所有操作(无论好坏)。