Skip to content

Instantly share code, notes, and snippets.

@DerekHung
Created January 5, 2018 05:14
Show Gist options
  • Save DerekHung/f8f6019a1601ead0cfba4152f4878bc2 to your computer and use it in GitHub Desktop.
Save DerekHung/f8f6019a1601ead0cfba4152f4878bc2 to your computer and use it in GitHub Desktop.
middleware performance checker
import {
EventEmitter
} from 'events';
let instance = null;
class MdwLogger {
constructor() {
if (!instance) {
instance = this;
instance.event = new EventEmitter();
instance.event.on('middleware', ({
req,
name
}) => {
console.timeEnd(`${req.method} ${req.url} : ${name}`);
});
}
return instance;
}
wrap(fn, name) {
const that = this;
return function (req, res, next) {
const fnName = fn.name || name;
console.time(`${req.method} ${req.url} : ${fnName}`);
fn(req, res, function () {
that.event.emit('middleware', {
req,
name: fn.name || name
});
next.apply(this, arguments);
});
};
}
}
export default MdwLogger;
@DerekHung
Copy link
Author

DerekHung commented Jan 5, 2018

Usage:

const MdwLogger = new mdwLogger();
/// if middleware is annoymus function
app.use(MdwLogger.wrap(middlewares.LoginFilter(), 'LoginFilter'))
/// else
app.use(MdwLogger.wrap(middlewares.LoginFilter()))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment