2016-12-29 46 views
2

我刚刚创建了一个应用程序从快车发生器同时使用`morgan`和`debug`记录包,它使用了两个记录器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); 
--^^^^^^^-- 
} 

/app.js

var logger = require('morgan'); 
... 
app.use(logger('dev')); 

为什么要同时使用?不能只将其中一个用于两个目的?

回答

1

morgan是您通常作为中间件附加的库,然后在请求流经您的系统时自动记录信息,尤其是关于timing。我不相信这是你通常手动调用其他日志记录的东西。

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

因此,您可以使用debug以相同的方式和morgan做同样的事情,但您必须手工完成(无论好坏)。

+0

谢谢,但我可以很容易地用'debug()'编写一个函数,并将其添加为中间件。还有其他的东西 –

+0

这就是[非常多](https://github.com/expressjs/morgan/blob/58a7f26ec699fef99e3ed11209503367fa3d2c9c/index.js#L129-L130)。您还需要自己的计时方法来跟踪请求需要多长时间,并且如果您想完全模仿“摩根”,可以更改日志记录[格式](https://github.com/expressjs/morgan/blob/ 58a7f26ec699fef99e3ed11209503367fa3d2c9c/index.js#L152)。 – dvlsg

+0

谢谢,[这](http://stackoverflow.com/questions/23494956/how-to-use-morgan-logger)线程解释了很多关于'摩根'的东西。我特别喜欢这个解释:'Morgan的构建方式是像Apache和Nginx这样的服务器登录到error_log或access_log.'的方式进行日志记录。你可能想从线索中添加一些细节到你的答案。 –

相关问题