Node.js: Log static file requests with expressjs serve-static middleware
nodejs, express, static, logfile, analytics, statistics, download counter
In most cases, every web-application requires some kind of request logging. Especially package downloads will be counted for statistic purpose. By using expressjs, static content is served by the middleware module serve-static.
To count the successfull requests handled by this module, you can hook into the setHeaders callback which is invoked each time a file is ready for delivering (file exists, file is accessible).
Example#
// utility
const _path = require('path');
// expressjs
const _express = require('express');
let _webapp = _express();
// your statistic module
const _downloadStats = require('./download-counter');
// serve static package files
_webapp.use('/downloads', _express.static(_path.join(__dirname, 'downloads'), {
// setHeaders is only called on success (stat available/file found)
setHeaders: function(res, path, stat){
// count request: full-path, file-stats, client-ip
_downloadStats(path, stat, res.req.connection.remoteAddress);
}
}));
