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); } }));