Removing uneccessary log
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Fabian Stamm 2020-08-07 16:04:06 +02:00
parent e51069deab
commit 77fedd2815
1 changed files with 64 additions and 44 deletions

View File

@ -1,44 +1,47 @@
import { WebConfig } from "./config"; import { WebConfig } from "./config";
import * as express from "express" import * as express from "express";
import { Express } from "express" import { Express } from "express";
import Logging from "@hibas123/nodelogging" import Logging from "@hibas123/nodelogging";
import * as bodyparser from "body-parser"; import * as bodyparser from "body-parser";
import * as cookieparser from "cookie-parser" import * as cookieparser from "cookie-parser";
import * as i18n from "i18n" import * as i18n from "i18n";
import * as compression from "compression"; import * as compression from "compression";
import ApiRouter from "./api"; import ApiRouter from "./api";
import ViewRouter from "./views/views"; import ViewRouter from "./views/views";
import RequestError, { HttpStatusCode } from "./helper/request_error"; import RequestError, { HttpStatusCode } from "./helper/request_error";
export default class Web { export default class Web {
server: Express server: Express;
private port: number private port: number;
constructor(config: WebConfig) { constructor(config: WebConfig) {
this.server = express() this.server = express();
this.port = Number(config.port); this.port = Number(config.port);
this.registerMiddleware() this.registerMiddleware();
this.registerEndpoints() this.registerEndpoints();
this.registerErrorHandler() this.registerErrorHandler();
} }
listen() { listen() {
this.server.listen(this.port, () => { this.server.listen(this.port, () => {
Logging.log(`Server listening on port ${this.port}`) Logging.log(`Server listening on port ${this.port}`);
}) });
} }
private registerMiddleware() { private registerMiddleware() {
this.server.use(cookieparser()) this.server.use(cookieparser());
this.server.use(bodyparser.json(), bodyparser.urlencoded({ extended: true })) this.server.use(
this.server.use(i18n.init) bodyparser.json(),
bodyparser.urlencoded({ extended: true })
);
this.server.use(i18n.init);
//Logging Middleware //Logging Middleware
this.server.use((req, res, next) => { this.server.use((req, res, next) => {
let start = process.hrtime() let start = process.hrtime();
let finished = false; let finished = false;
let to = false; let to = false;
let listener = () => { let listener = () => {
@ -47,55 +50,72 @@ export default class Web {
let td = process.hrtime(start); let td = process.hrtime(start);
let time = !to ? (td[0] * 1e3 + td[1] / 1e6).toFixed(2) : "--.--"; let time = !to ? (td[0] * 1e3 + td[1] / 1e6).toFixed(2) : "--.--";
let resColor = ""; let resColor = "";
if (res.statusCode >= 200 && res.statusCode < 300) resColor = "\x1b[32m" //Green if (res.statusCode >= 200 && res.statusCode < 300)
else if (res.statusCode === 304 || res.statusCode === 302) resColor = "\x1b[33m" resColor = "\x1b[32m";
else if (res.statusCode >= 400 && res.statusCode < 500) resColor = "\x1b[36m" //Cyan //Green
else if (res.statusCode >= 500 && res.statusCode < 600) resColor = "\x1b[31m" //Red else if (res.statusCode === 304 || res.statusCode === 302)
resColor = "\x1b[33m";
else if (res.statusCode >= 400 && res.statusCode < 500)
resColor = "\x1b[36m";
//Cyan
else if (res.statusCode >= 500 && res.statusCode < 600)
resColor = "\x1b[31m"; //Red
let m = req.method; let m = req.method;
while (m.length < 4) m += " "; while (m.length < 4) m += " ";
Logging.log(`${m} ${req.originalUrl} ${req.language} ${resColor}${res.statusCode}\x1b[0m - ${time}ms`) Logging.log(
res.removeListener("finish", listener) `${m} ${req.originalUrl} ${req.language} ${resColor}${res.statusCode}\x1b[0m - ${time}ms`
} );
res.on("finish", listener) res.removeListener("finish", listener);
};
res.on("finish", listener);
setTimeout(() => { setTimeout(() => {
to = true; to = true;
listener(); listener();
}, 2000) }, 2000);
next() next();
}) });
this.server.use(compression({ this.server.use(
filter: (req, res) => { compression({
if (req.headers['x-no-compression']) { filter: (req, res) => {
return false if (req.headers["x-no-compression"]) {
} return false;
return compression.filter(req, res) }
} return compression.filter(req, res);
})); },
})
);
} }
private registerEndpoints() { private registerEndpoints() {
this.server.use("/api", ApiRouter); this.server.use("/api", ApiRouter);
this.server.use("/", ViewRouter) this.server.use("/", ViewRouter);
} }
private registerErrorHandler() { private registerErrorHandler() {
this.server.use((error, req: express.Request, res, next) => { this.server.use((error, req: express.Request, res, next) => {
if (!(error instanceof RequestError)) { if (!(error instanceof RequestError)) {
error = new RequestError(error.message, error.status || HttpStatusCode.INTERNAL_SERVER_ERROR, error.nolog || false); error = new RequestError(
error.message,
error.status || HttpStatusCode.INTERNAL_SERVER_ERROR,
error.nolog || false
);
} }
if (error.status === 500 && !(<any>error).nolog) { if (error.status === 500 && !(<any>error).nolog) {
Logging.error(error); Logging.error(error);
} else { } else {
Logging.log("Responded with Error:", typeof error.message === "string" ? error.message.split("\n", 1)[0] : error.message); Logging.log("Responded with Error", error.status);
} }
if (req.accepts(["json"])) { if (req.accepts(["json"])) {
res.json_status = error.status || 500; res.json_status = error.status || 500;
res.json({ error: error.message, status: error.status || 500, additional: error.additional }) res.json({
} else error: error.message,
res.status(error.status || 500).send(error.message) status: error.status || 500,
}) additional: error.additional,
});
} else res.status(error.status || 500).send(error.message);
});
} }
} }