ExpressJS摩根仅记录路线请求

时间:2014-11-15 06:27:12

标签: css node.js express

我使用NodeJS Web框架Expressjs和一个中间件将请求记录到文件(morgan)。

我的conf:

// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream(__dirname + '/logs/access.log', {flags: 'a'})

// setup the logger
app.use(logger('short', {stream: accessLogStream}))

我的日志看起来像:

192.168.1.3 - GET /signup HTTP/1.1 304 - - 19.194 ms 
192.168.1.3 - GET /assets/css/admin/module.admin.stylesheet-complete.sidebar_type.collapse.no_min2.css HTTP/1.1 304 - - 15.500 ms 
192.168.1.3 - GET /assets/components/library/jquery/jquery.min.js?v=v1.0.3-rc2&amb;sv=v0.0.1.1 HTTP/1.1 304 - - 14.244 ms 

有没有办法只记录路由请求?例如,如果用户输入/ signup /:

192.168.1.3 - GET /signup HTTP/1.1 304 - - 19.194 ms

而不是路线所需的资产。

提前致谢。

2 个答案:

答案 0 :(得分:11)

我有同样的问题,我找到了简单的解决方案,也许它会帮助某人。如果您使用express.static,您可以将此通话移至摩根通话之上, 例如:

app.use(express.static(__dirname + '/public'));
...
app.use(logger('short'));

不会记录静态资产。注意:您的资产文件必须存在,否则它们仍将被记录(在快递4.12中测试)。

答案 1 :(得分:1)

如果在静态路由之后实例化记录器,则不会记录静态路由

app.use(express.static('...')); // first declare static folder

app.use(logger('any format here')); // instantiate logger