トピックから少し外れますが (OP が Winston について尋ねているため)、Bunyan による「子ロガー」アプローチが気に入っています。
var bunyan = require('bunyan');
var log = bunyan.createLogger({name: 'myapp'});
app.use(function(req, res, next) {
req.log = log.child({reqId: uuid()});
next();
});
app.get('/', function(req, res) {
req.log.info({user: ...});
});
ロガーはreqオブジェクトを介して利用できるため、OPの問題を解決します(したがって、各モジュールで「require(log)」は必要ありません)。さらに、特定のリクエストに属するすべてのログ エントリには、それらを結び付ける一意の ID があります。
{"name":"myapp","hostname":"pwony-2","pid":14837,"level":30,"reqId":"XXXX-XX-XXXX","user":"...@gmail.com","time":"2014-05-26T18:27:43.530Z","v":0}
Winston もこれをサポートしているかどうかはわかりません。