Skip to content

Commit

Permalink
Implement logging middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
jannostern committed Jun 3, 2024
1 parent f726bca commit d4501dc
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
30 changes: 30 additions & 0 deletions lib/requestLoggerMiddleware.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
* @param res Original Response Object
* @param send Original UNMODIFIED res.send function
* @return A patched res.send which takes the send content, binds it to contentBody on
* the res and then calls the original res.send after restoring it
*/
const resDotSendInterceptor = (res, send) => (content) => {
res.contentBody = content;
res.send = send;
res.send(content);
};

export const requestLoggerMiddleware =
({ logger }) =>
(req, res, next) => {
logger(
`Request: {method: ${req.method}, url: ${
req.url
}, params: ${JSON.stringify(req.params)}, query: ${JSON.stringify(
req.query
)}, body: ${JSON.stringify(req.body)}`
);
res.send = resDotSendInterceptor(res, res.send);
res.on("finish", () => {
logger(
`Response: {statusCode: ${res.statusCode}, responseData: ${res.contentBody}}`
);
});
next();
};
6 changes: 6 additions & 0 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import secrets from "./controllers/secrets.js";
import fs from "fs";
import files from "./controllers/files.js";
import crypto from "crypto";
import bodyParser from "body-parser";

import encryption from "./controllers/encryption.js";
import decryption from "./controllers/decryption.js";
Expand All @@ -31,6 +32,7 @@ import validate from "./controllers/validate.js";
import utils from "./controllers/utils.js";
import domain from "./controllers/domain.js";
import forms from "./controllers/forms.js";
import { requestLoggerMiddleware } from "./lib/requestLoggerMiddleware.js";

const __dirname = path.dirname(fileURLToPath(import.meta.url));
const { publicKey, privateKey } = crypto.generateKeyPairSync("rsa", {
Expand All @@ -49,6 +51,10 @@ const rateLimit = setRateLimit({
statusCode: 429,
});

app.use(bodyParser.json());
app.use(bodyParser.text());
app.use(requestLoggerMiddleware({ logger: console.log }));

app.use(express.json());
app.use("/file-manager", files);
app.use("/conversion", conversion);
Expand Down

0 comments on commit d4501dc

Please sign in to comment.