From 6139f12e13f2e251effc8f545f9c9235bad4ead7 Mon Sep 17 00:00:00 2001 From: ajdj100 Date: Wed, 31 Dec 2025 13:14:47 -0500 Subject: [PATCH] added error handling system in logger --- api/src/routes/applications.ts | 36 +++++++++++++++++++++--------- api/src/services/logging/logger.ts | 6 ++++- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/api/src/routes/applications.ts b/api/src/routes/applications.ts index a257142..82237d5 100644 --- a/api/src/routes/applications.ts +++ b/api/src/routes/applications.ts @@ -11,23 +11,37 @@ import { assignUserToStatus } from '../services/db/statusService'; import { Request, response, Response } from 'express'; import { getUserRoles } from '../services/db/rolesService'; import { requireLogin, requireRole } from '../middleware/auth'; +import { logger } from '../services/logging/logger'; //get CoC router.get('/coc', async (req: Request, res: Response) => { - const output = await fetch(`${process.env.DOC_HOST}/api/pages/714`, { - headers: { - Authorization: `Token ${process.env.DOC_TOKEN_ID}:${process.env.DOC_TOKEN_SECRET}`, - } - }) + try { + const response = await fetch(`${process.env.DOC_HOST}/api/pages/714`, { + headers: { + Authorization: `Token ${process.env.DOC_TOKEN_ID}:${process.env.DOC_TOKEN_SECRET}`, + }, + }); - if (output.ok) { - const out = await output.json(); + if (!response.ok) { + const text = await response.text(); + logger.error('app', 'Failed to fetch LOA policy from Bookstack', { + status: response.status, + statusText: response.statusText, + body: text, + }); + return res.sendStatus(500); + } + + const out = await response.json(); res.status(200).json(out.html); - } else { - console.error("Failed to fetch LOA policy from bookstack"); + + } catch (error) { + logger.error('app', 'Error fetching LOA policy from Bookstack', { + error: error instanceof Error ? error.message : String(error), + }); res.sendStatus(500); } -}) +}); // POST /application @@ -79,7 +93,7 @@ router.get('/me', [requireLogin], async (req, res) => { try { let application = await getMemberApplication(userID); - + if (application === undefined) { res.sendStatus(204); return; diff --git a/api/src/services/logging/logger.ts b/api/src/services/logging/logger.ts index c0b075c..cc4c39e 100644 --- a/api/src/services/logging/logger.ts +++ b/api/src/services/logging/logger.ts @@ -29,7 +29,11 @@ function emitLog(header: LogHeader, payload: LogPayload = {}) { if (!shouldLog(header.depth)) return; const logLine = { ...header, ...payload }; - console.log(JSON.stringify(logLine)); + + if (header.level === 'error') + console.error(JSON.stringify(logLine)) + else + console.log(JSON.stringify(logLine)); } export const logger = {