app.use((err: Error, req: express.Request, res: express.Response, next: express.NextFunction) => { res.status(res.statusCode || 500); res.render('error', { message: err.message, error: err }); });
// Runs after each requests app.use((req, res, next) => { const responseTimeInMs = Date.now() - res.locals.startEpoch httpRequestDurationMicroseconds .labels(req.method, req.route.path, res.statusCode) .observe(responseTimeInMs) next() })
check_csr(request, response, function (code) { if (code === '301-2') { response.status(response.statusCode).end(response.body); request = null; response = null; } else { responder.error_result(request, response, resultStatusCode[code][0], resultStatusCode[code][1], resultStatusCode[code][2], function () { request.connection.release(); request = null; response = null; }); } });
skip(req, res) { return res.statusCode < 400; }
// Middleware function to count total requests and the request duration for a given method app.use((req, res, next) => { res.locals.startTime = Date.now() next() Metrics.get("http_requests_total") .labels(req.method, req.route.path, res.statusCode) .inc() const responseTimeMS = Date.now() - res.locals.startTime Metrics.get("http_duration_histogram_seconds") .labels(req.method, req.route.path, res.statusCode) .observe(responseTimeMS/1000) })
// logger app.use((req, res, next) => { const now = new Date().toString().slice(4, 24); res.on("finish", () => { log.Logger(`${now} ${req.method} ${res.statusCode} ${req.url}`); }); next(); });
// Log every request router.use(function (req,res,next) { next(); console.log("%s %s => %d", req.method, req.originalUrl, res.statusCode); });
app.use(function profilerMiddleware(req, res, next) { const start = performance.now(); res.once('finish', () => { const routename = req.path.replace('/', ''); const timing = performance.now() - start; //Send timer metric to statsd metrics.global.timing('api.route.' + routename + '.latency.total', timing); //Send counter metric for status code count to statsd metrics.global.increment('api.requests.' + res.statusCode); }); next(); });
app.use( morgan(process.env.NODE_ENV !== "production" ? "dev" : "combined", { skip: function(req, res) { return res.statusCode >= 400; }, stream: process.stdout }) );
//downstream middleware: after API endpoint app.use((req, res, next) => { console.log("Downstream middleware -> I'm about to log the request success status") console.log(res.statusCode); next(); });
app.use(morgan('dev', { skip: function (req, res) { return res.statusCode >= 400 }, stream: process.stdout }));
app.use((req, res, next) => { const responseTimeInMs = Date.now() - res.locals.startEpoch; httpRequestDurationMicroseconds .labels(req.method, req.path, res.statusCode) .observe(responseTimeInMs); next(); });
app.use(morgan('dev', { skip: function (req, res) { return res.statusCode < 400 }, stream: process.stderr }));
// production error handler // no stacktraces leaked to user app.use((err: Error, req: express.Request, res: express.Response, next: express.NextFunction) => { res.status(res.statusCode || 500); res.render('error', { message: err.message, error: {} }); });
// process.on("SIGINT", function() { // console.log("SIGINT received"); // amIHealthy = false; // const timeReceiveSignal = new Date(); // server.close(function () { // console.log(`Server is now closed, it took ${new Date() - timeReceiveSignal}`) // process.exit(0); // }); // }); //downstream middleware: after API endpoint app.use((req, res, next) => { console.log( "Downstream middleware -> I'm about to log the request success status" ); console.log(res.statusCode); next(); });