summary refs log tree commit diff
path: root/api/src
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-09-18 20:45:30 +0200
committerGitHub <noreply@github.com>2021-09-18 20:45:30 +0200
commit3269f62d62713fe69a3a3b88370003146dc2fb49 (patch)
tree2334610f219ee3621f13ca57371b9b683faa7828 /api/src
parentMerge pull request #369 from AlTech98/fix-dm (diff)
parentAdd response code white/blacklisting (diff)
downloadserver-3269f62d62713fe69a3a3b88370003146dc2fb49.tar.xz
Merge pull request #375 from TheArcaneBrony/request-logging
Add request logging (with env var: log-requests)
Diffstat (limited to 'api/src')
-rw-r--r--api/src/Server.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/api/src/Server.ts b/api/src/Server.ts
index b9ca3fba..bda19db5 100644
--- a/api/src/Server.ts
+++ b/api/src/Server.ts
@@ -1,3 +1,4 @@
+import { OptionsJson } from 'body-parser';
 import "missing-native-js-functions";
 import { Connection } from "mongoose";
 import { Server, ServerOptions } from "lambert-server";
@@ -11,6 +12,7 @@ import path from "path";
 import { initRateLimits } from "./middlewares/RateLimit";
 import TestClient from "./middlewares/TestClient";
 import { initTranslation } from "./middlewares/Translation";
+import morgan from "morgan";
 
 export interface FosscordServerOptions extends ServerOptions {}
 
@@ -36,6 +38,29 @@ export class FosscordServer extends Server {
 		await Config.init();
 		await initEvent();
 
+
+		/* 
+		DOCUMENTATION: uses log-requests environment variable
+		
+		# only log 200 and 204
+		log-requests=200 204
+		# log everything except 200 and 204
+		log-requests=-200 204
+		# log all requests
+		log-requests=-
+		*/
+		
+		let logRequests = process.env["log-requests"] != undefined;
+		if(logRequests) {
+			this.app.use(morgan("combined", {
+				skip: (req, res) => {
+					var skip = !(process.env["log-requests"]?.includes(res.statusCode.toString()) ?? false);
+					if(process.env["log-requests"]?.charAt(0) == '-') skip = !skip;
+					return skip;
+				}
+			}));
+		}
+
 		this.app.use(CORS);
 		this.app.use(BodyParser({ inflate: true, limit: "10mb" }));
 
@@ -65,6 +90,9 @@ export class FosscordServer extends Server {
 		this.app.use(ErrorHandler);
 		TestClient(this.app);
 
+		if(logRequests){
+			console.log("Warning: Request logging is enabled! This will spam your console!\nTo disable this, unset the 'log-requests' environment variable!");
+		}
 		return super.start();
 	}
 }