From 637968552d8b9371ea4f9eb63548d021ff418fb3 Mon Sep 17 00:00:00 2001 From: ajdj100 Date: Wed, 17 Dec 2025 09:35:12 -0500 Subject: [PATCH 1/2] Built custom log format --- api/package-lock.json | 13 +++++++++++++ api/package.json | 1 + api/src/index.ts | 22 ++++++++++++++++++++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/api/package-lock.json b/api/package-lock.json index 3e1f4c1..1b35021 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "@sentry/node": "^10.27.0", + "chalk": "^5.6.2", "connect-sqlite3": "^0.9.16", "cors": "^2.8.5", "dotenv": "^17.2.1", @@ -1314,6 +1315,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", diff --git a/api/package.json b/api/package.json index 9d686bd..261b26a 100644 --- a/api/package.json +++ b/api/package.json @@ -13,6 +13,7 @@ }, "dependencies": { "@sentry/node": "^10.27.0", + "chalk": "^5.6.2", "connect-sqlite3": "^0.9.16", "cors": "^2.8.5", "dotenv": "^17.2.1", diff --git a/api/src/index.ts b/api/src/index.ts index 80d29db..c7e900d 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -5,8 +5,26 @@ import express = require('express'); import cors = require('cors'); import morgan = require('morgan'); const app = express() -app.use(morgan('dev', { - skip: (req) => { +import chalk from 'chalk'; +app.use(morgan((tokens: morgan.TokenIndexer, req: express.Request, res: express.Response) => { + const status = Number(tokens.status(req, res)); + + // Colorize status code + const statusColor = status >= 500 ? chalk.red + : status >= 400 ? chalk.yellow + : status >= 300 ? chalk.cyan + : chalk.green; + + return [ + chalk.gray(`[${new Date().toISOString()}]`), + chalk.blue.bold(tokens.method(req, res)), + tokens.url(req, res), + statusColor(status), + chalk.magenta(tokens['response-time'](req, res) + ' ms'), + chalk.yellow(`- User: ${req.user?.name ? `${req.user.name} (${req.user.id})` : 'Unauthenticated'}`), + ].join(' '); +}, { + skip: (req: express.Request) => { return req.originalUrl === '/members/me'; } })) From a7c2ed7dff141a7a70fde316a9040ac427491dff Mon Sep 17 00:00:00 2001 From: ajdj100 Date: Wed, 17 Dec 2025 09:40:11 -0500 Subject: [PATCH 2/2] Removed a whole bunch of old logging --- api/src/routes/applications.ts | 7 ------- api/src/routes/calendar.ts | 1 - api/src/routes/course.ts | 1 - api/src/routes/loa.ts | 3 --- api/src/routes/members.ts | 2 -- api/src/routes/roles.ts | 4 +--- api/src/services/applicationService.ts | 2 -- api/src/services/calendarService.ts | 1 - api/src/services/loaService.ts | 2 -- api/src/services/memberService.ts | 1 - shared/utils/time.ts | 1 - ui/src/components/loa/loaForm.vue | 1 - ui/src/pages/MyProfile.vue | 1 - 13 files changed, 1 insertion(+), 26 deletions(-) diff --git a/api/src/routes/applications.ts b/api/src/routes/applications.ts index 6183c2a..5a98f07 100644 --- a/api/src/routes/applications.ts +++ b/api/src/routes/applications.ts @@ -105,7 +105,6 @@ router.get('/me/:id', [requireLogin], async (req: Request, res: Response) => { const application = await getApplicationByID(appID); if (application === undefined) return res.sendStatus(204); - console.log(application.member_id, member) if (application.member_id != member) { return res.sendStatus(403); } @@ -191,8 +190,6 @@ router.post('/:id/comment', [requireLogin], async (req: Request, res: Response) const data = req.body.message; const user = req.user; - console.log(user) - const sql = `INSERT INTO application_comments( application_id, poster_id, @@ -205,7 +202,6 @@ VALUES(?, ?, ?);` var conn = await pool.getConnection(); const result = await conn.query(sql, [appID, user.id, data]) - console.log(result) if (result.affectedRows !== 1) { conn.release(); throw new Error("Insert Failure") @@ -237,8 +233,6 @@ router.post('/:id/adminComment', [requireLogin, requireRole("Recruiter")], async const data = req.body.message; const user = req.user; - console.log(user) - const sql = `INSERT INTO application_comments( application_id, poster_id, @@ -251,7 +245,6 @@ VALUES(?, ?, ?, 1);` var conn = await pool.getConnection(); const result = await conn.query(sql, [appID, user.id, data]) - console.log(result) if (result.affectedRows !== 1) { conn.release(); throw new Error("Insert Failure") diff --git a/api/src/routes/calendar.ts b/api/src/routes/calendar.ts index 0492501..a5c96be 100644 --- a/api/src/routes/calendar.ts +++ b/api/src/routes/calendar.ts @@ -107,7 +107,6 @@ r.put('/', [requireLogin, requireMemberState(MemberState.Member)], async (req: R let event: CalendarEvent = req.body; event.start = new Date(event.start); event.end = new Date(event.end); - console.log(event); updateEvent(event); res.sendStatus(200); } catch (error) { diff --git a/api/src/routes/course.ts b/api/src/routes/course.ts index 7b10bdd..91a2057 100644 --- a/api/src/routes/course.ts +++ b/api/src/routes/course.ts @@ -83,7 +83,6 @@ er.get('/attendees/:id', async (req: Request, res: Response) => { er.post('/', async (req: Request, res: Response) => { const posterID: number = req.user.id; try { - console.log(); let data: CourseEventDetails = req.body; data.created_by = posterID; data.event_date = new Date(data.event_date); diff --git a/api/src/routes/loa.ts b/api/src/routes/loa.ts index bb85fa5..de218c6 100644 --- a/api/src/routes/loa.ts +++ b/api/src/routes/loa.ts @@ -30,9 +30,6 @@ router.post("/admin", [requireRole("17th Administrator")], async (req: Request, let LOARequest = req.body as LOARequest; LOARequest.created_by = req.user.id; LOARequest.filed_date = new Date(); - - console.log(LOARequest); - try { await createNewLOA(LOARequest); res.sendStatus(201); diff --git a/api/src/routes/members.ts b/api/src/routes/members.ts index ea5f99a..c73b8f2 100644 --- a/api/src/routes/members.ts +++ b/api/src/routes/members.ts @@ -53,7 +53,6 @@ router.get('/me', [requireLogin], async (req, res) => { router.get('/settings', [requireLogin], async (req: Request, res: Response) => { try { let user = req.user.id; - console.log(user); let output = await getMemberSettings(user); res.status(200).json(output); } catch (error) { @@ -66,7 +65,6 @@ router.put('/settings', [requireLogin], async (req: Request, res: Response) => { try { let user = req.user.id; let settings: memberSettings = req.body; - console.log(settings) await setUserSettings(user, settings); res.sendStatus(200); } catch (error) { diff --git a/api/src/routes/roles.ts b/api/src/routes/roles.ts index 4b692af..d0f0e68 100644 --- a/api/src/routes/roles.ts +++ b/api/src/routes/roles.ts @@ -28,7 +28,6 @@ ur.post('/', [requireMemberState(MemberState.Member), requireRole("17th Administ ur.delete('/', [requireMemberState(MemberState.Member), requireRole("17th Administrator")], async (req, res) => { try { const body = req.body; - console.log(body); const sql = 'DELETE FROM members_roles WHERE member_id = ? AND role_id = ?' await pool.query(sql, [body.member_id, body.role_id]) @@ -86,7 +85,6 @@ r.get('/', [requireMemberState(MemberState.Member)], async (req, res) => { r.post('/', [requireMemberState(MemberState.Member), requireRole("17th Administrator")], async (req, res) => { try { const { name, color, description } = req.body; - console.log('Creating role:', { name, color, description }); if (!name || !color) { return res.status(400).json({ error: 'Name and color are required' }); } @@ -113,7 +111,7 @@ r.delete('/:id', [requireMemberState(MemberState.Member), requireRole("17th Admi const res = await pool.query(sql, [id]); res.sendStatus(200); } catch (error) { - console.log(error); + console.error(error); res.sendStatus(500); } }) diff --git a/api/src/services/applicationService.ts b/api/src/services/applicationService.ts index d0f2c95..159dbe3 100644 --- a/api/src/services/applicationService.ts +++ b/api/src/services/applicationService.ts @@ -73,7 +73,6 @@ export async function approveApplication(id: number, approver: number) { `; const result = await pool.execute(sql, [approver, id]); - console.log(result); if (result.affectedRows == 1) { return } else { @@ -91,7 +90,6 @@ export async function denyApplication(id: number, approver: number) { `; const result = await pool.execute(sql, [approver, id]); - console.log(result); if (result.affectedRows == 1) { return } else { diff --git a/api/src/services/calendarService.ts b/api/src/services/calendarService.ts index 7aa2cee..4862650 100644 --- a/api/src/services/calendarService.ts +++ b/api/src/services/calendarService.ts @@ -126,6 +126,5 @@ export async function getEventAttendance(eventID: number): Promise { let res = await pool.query(`SELECT * FROM leave_of_absences WHERE id = ?`, [id]); - console.log(res); if (res.length != 1) throw new Error(`LOA with id ${id} not found`); return res[0]; diff --git a/api/src/services/memberService.ts b/api/src/services/memberService.ts index 8bc1dd9..844ef33 100644 --- a/api/src/services/memberService.ts +++ b/api/src/services/memberService.ts @@ -34,7 +34,6 @@ export async function setUserSettings(id: number, settings: memberSettings) { displayName = ? WHERE id = ?;`; let result = await pool.query(sql, [settings.displayName, id]) - console.log(result); } export async function getMembersLite(ids: number[]): Promise { diff --git a/shared/utils/time.ts b/shared/utils/time.ts index 9c5d03c..e1b5ea8 100644 --- a/shared/utils/time.ts +++ b/shared/utils/time.ts @@ -1,5 +1,4 @@ export function toDateTime(date: Date): string { - console.log(date); if (typeof date === 'string') { date = new Date(date); } diff --git a/ui/src/components/loa/loaForm.vue b/ui/src/components/loa/loaForm.vue index 8bea146..44eeb1c 100644 --- a/ui/src/components/loa/loaForm.vue +++ b/ui/src/components/loa/loaForm.vue @@ -74,7 +74,6 @@ const { handleSubmit, values, resetForm } = useForm({ const formSubmitted = ref(false); const onSubmit = handleSubmit(async (values) => { - console.log(values); const out: LOARequest = { member_id: values.member_id, start_date: values.start_date, diff --git a/ui/src/pages/MyProfile.vue b/ui/src/pages/MyProfile.vue index 48dfd61..7ed184c 100644 --- a/ui/src/pages/MyProfile.vue +++ b/ui/src/pages/MyProfile.vue @@ -25,7 +25,6 @@ function saveSettings() { // Replace with your API save call setMemberSettings(form.value); saving.value = false; - console.log(userStore.user.id) memberDictionary.invalidateMember(userStore.user.id) }, 800); }