我使用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
而不是路线所需的资产。
提前致谢。
答案 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