Files
talk/src/core/server/app/middleware/logging.ts
T
Wyatt Johnson 0b3aead1d2 [next] Perspective API Integration (#1797)
* feat: initial toxic comments impl

* feat: improved logging

* feat: tenant cache adapter

* feat: move more types into graphql
2018-08-14 14:37:00 +00:00

49 lines
1.2 KiB
TypeScript

import { ErrorRequestHandler, RequestHandler } from "express";
import now from "performance-now";
import logger from "talk-server/logger";
export const accessLogger: RequestHandler = (req, res, next) => {
const startTime = now();
const end = res.end;
res.end = (chunk: any, encodingOrCb?: any, cb?: any) => {
// Compute the end time.
const responseTime = Math.round(now() - startTime);
// Get some extra goodies from the request.
const userAgent = req.get("User-Agent");
// Reattach the old end, and finish.
res.end = end;
if (typeof encodingOrCb === "function") {
res.end(chunk, encodingOrCb);
} else {
res.end(chunk, encodingOrCb, cb);
}
// Log this out.
logger.info(
{
// traceID: req.id,
url: req.originalUrl || req.url,
method: req.method,
statusCode: res.statusCode,
userAgent,
responseTime,
},
"http request"
);
};
next();
};
export const errorLogger: ErrorRequestHandler = (err, req, res, next) => {
// TODO: handle better when we improve errors.
if (err.message !== "not found") {
logger.error({ err }, "http error");
}
next(err);
};