chore: improve error logging

This commit is contained in:
tdurieux
2022-08-10 08:12:50 +02:00
parent 1410a31577
commit 3497d315fa
9 changed files with 50 additions and 38 deletions

View File

@@ -17,11 +17,17 @@ export async function connect() {
}
export async function getRepository(repoId: string) {
if (!repoId) {
throw new AnonymousError("repo_not_found", {
object: repoId,
httpStatus: 404,
});
}
const data = await AnonymizedRepositoryModel.findOne({ repoId });
if (!data)
throw new AnonymousError("repo_not_found", {
object: repoId,
httpStatus: 400,
httpStatus: 404,
});
return new Repository(data);
}

View File

@@ -24,7 +24,7 @@ router.use(
isOwnerOrAdmin([], user);
next();
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);

View File

@@ -62,7 +62,7 @@ router.get("/", async (req: express.Request, res: express.Response) => {
);
res.json(conferences.map((conf) => conf.toJSON()));
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
});
@@ -206,7 +206,7 @@ router.post(
res
);
}
handleError(error, res);
handleError(error, res, req);
}
}
);
@@ -241,7 +241,7 @@ router.get(
})
}
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);
@@ -264,7 +264,7 @@ router.delete(
await conference.remove();
res.send("ok");
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);

View File

@@ -37,7 +37,7 @@ router.get(
res.header('Cache-Control', 'max-age=300');
await f.send(res);
} catch (error) {
return handleError(error, res);
return handleError(error, res, req);
}
}
);

View File

@@ -78,7 +78,7 @@ router.post("/claim", async (req: express.Request, res: express.Response) => {
);
return res.send("Ok");
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
});
@@ -102,7 +102,7 @@ router.post(
await repo.updateIfNeeded({ force: true });
res.json({ status: repo.status });
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);
@@ -126,7 +126,7 @@ router.delete(
await removeQueue.add(repo.repoId, repo, { jobId: repo.repoId });
return res.json({ status: repo.status });
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);
@@ -143,7 +143,7 @@ router.get(
});
res.json(repo.toJSON());
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);
@@ -165,7 +165,7 @@ router.get(
})
);
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);
@@ -195,7 +195,7 @@ router.get(
})
);
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);
@@ -210,7 +210,7 @@ router.get("/:repoId/", async (req: express.Request, res: express.Response) => {
isOwnerOrAdmin([repo.owner.id], user);
res.json((await db.getRepository(req.params.repoId)).toJSON());
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
});
@@ -364,7 +364,7 @@ router.post(
res.json({ status: repo.status });
await downloadQueue.add(repo.repoId, repo, { jobId: repo.repoId });
} catch (error) {
return handleError(error, res);
return handleError(error, res, req);
}
}
);
@@ -444,10 +444,11 @@ router.post("/", async (req: express.Request, res: express.Response) => {
cause: error,
object: repoUpdate,
}),
res
res,
req
);
}
return handleError(error, res);
return handleError(error, res, req);
}
});

View File

@@ -37,7 +37,7 @@ router.get(
res.header("Cache-Control", "max-age=21600");
await pipeline(repo.zip(), res);
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);
@@ -52,7 +52,7 @@ router.get(
res.json(await repo.anonymizedFiles({ includeSha: false }));
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);
@@ -131,7 +131,7 @@ router.get(
download,
});
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);

View File

@@ -28,7 +28,7 @@ export async function getRepo(
}
return repo;
} catch (error) {
handleError(error, res);
handleError(error, res, req);
return null;
}
}
@@ -41,15 +41,16 @@ export function isOwnerOrAdmin(authorizedUsers: string[], user: User) {
}
}
function printError(error: any) {
function printError(error: any, req?: express.Request) {
io.notifyError(error, error.value);
if (error instanceof AnonymousError) {
console.log(error);
console.error(
"[ERROR]",
error.toString(),
error.stack.split("\n")[1].trim()
);
let message = `[ERROR] ${error.toString()} ${error.stack
.split("\n")[1]
.trim()}`;
if (req) {
message += ` ${req.originalUrl}`;
}
console.error(message);
} else if (error instanceof Error) {
console.error(error);
} else {
@@ -57,8 +58,12 @@ function printError(error: any) {
}
}
export function handleError(error: any, res: express.Response) {
printError(error);
export function handleError(
error: any,
res: express.Response,
req?: express.Request
) {
printError(error, req);
let message = error;
if (error instanceof Error) {
message = error.message;

View File

@@ -13,7 +13,7 @@ router.get("/logout", async (req: express.Request, res: express.Response) => {
req.logout((error) => console.error(error));
res.redirect("/");
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
});
@@ -26,7 +26,7 @@ router.get("/", async (req: express.Request, res: express.Response) => {
isAdmin: user.isAdmin,
});
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
});
@@ -54,7 +54,7 @@ router.get("/quota", async (req: express.Request, res: express.Response) => {
},
});
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
});
@@ -64,7 +64,7 @@ router.get("/default", async (req: express.Request, res: express.Response) => {
res.json(user.default);
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
});
@@ -78,7 +78,7 @@ router.post("/default", async (req: express.Request, res: express.Response) => {
await user.model.save();
res.send("ok");
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
});
@@ -93,7 +93,7 @@ router.get(
})
);
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);
@@ -115,7 +115,7 @@ router.get(
})
);
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}
);

View File

@@ -50,7 +50,7 @@ async function webView(req: express.Request, res: express.Response) {
}
f.send(res);
} catch (error) {
handleError(error, res);
handleError(error, res, req);
}
}