From de106eb69c3de538a417104c7cc74fd4da1dccf6 Mon Sep 17 00:00:00 2001 From: Adithya KP Date: Tue, 10 Feb 2026 13:55:08 +0530 Subject: [PATCH] feat: replace console.log statements with Winston logger across all services --- .../clone-worker/src/GitHandler/PathCheck.ts | 4 +++- .../services/detector/detectProjectType.ts | 3 ++- api-gateway/src/Queue/build-queue.ts | 3 ++- api-gateway/src/Queue/clone-queue.ts | 3 ++- api-gateway/src/consumer.ts | 11 ++++++----- .../src/controllers/auth.controller.ts | 7 ++++--- api-gateway/src/controllers/env.controller.ts | 3 ++- .../src/controllers/healthCheck.controller.ts | 3 ++- .../src/controllers/projects.controller.ts | 7 ++++--- .../src/controllers/repo.controller.ts | 5 +++-- .../src/controllers/router.controller.ts | 3 ++- api-gateway/src/db/postgresDb.ts | 3 ++- api-gateway/src/index.ts | 4 ++-- .../src/middlewares/auth.middlewares.ts | 7 ++++--- .../src/controllers/logs.controller.ts | 19 ++++++++++--------- .../src/controllers/container.controller.ts | 3 ++- routing-service/src/app.ts | 13 +++++++------ 17 files changed, 59 insertions(+), 42 deletions(-) diff --git a/WORKERS/clone-worker/src/GitHandler/PathCheck.ts b/WORKERS/clone-worker/src/GitHandler/PathCheck.ts index 55c5ed4..5eac3af 100644 --- a/WORKERS/clone-worker/src/GitHandler/PathCheck.ts +++ b/WORKERS/clone-worker/src/GitHandler/PathCheck.ts @@ -1,3 +1,5 @@ +import logger from "../../logger/logger.js"; + export async function folderCheck(repoUrl: string, path: string, branch = "main") { try { const url = new URL(repoUrl); @@ -29,6 +31,6 @@ export async function folderCheck(repoUrl: string, path: string, branch = "main" // Lol i will surely remove it , PINKY PROMISE HAHAHAHAHAHHA! return true; } catch (error: any) { - console.error("Error checking folder:", error); + logger.error("Error checking folder:", { error }); } } \ No newline at end of file diff --git a/WORKERS/clone-worker/src/services/detector/detectProjectType.ts b/WORKERS/clone-worker/src/services/detector/detectProjectType.ts index ea545ca..3cc3ae9 100644 --- a/WORKERS/clone-worker/src/services/detector/detectProjectType.ts +++ b/WORKERS/clone-worker/src/services/detector/detectProjectType.ts @@ -1,5 +1,6 @@ import path from "path"; import fs from "fs"; +import logger from "../../../logger/logger.js"; // Types interface PackageJSON { @@ -68,7 +69,7 @@ export function detectNodeVersion(projectDir: string): string { return resolveEngineRange(pkg.engines.node); } } catch (err) { - console.warn("Error parsing package.json:", err); + logger.warn("Error parsing package.json:", { error: err }); } } diff --git a/api-gateway/src/Queue/build-queue.ts b/api-gateway/src/Queue/build-queue.ts index 5555624..9b1a93b 100644 --- a/api-gateway/src/Queue/build-queue.ts +++ b/api-gateway/src/Queue/build-queue.ts @@ -1,5 +1,6 @@ import { Queue } from 'bullmq'; import {Redis} from 'ioredis'; +import logger from "../logger/logger.js"; const connection = new Redis({ host:process.env.REDIS_HOST || "internal-redis", port: 6379 @@ -7,4 +8,4 @@ const connection = new Redis({ export const buildQueue = new Queue('buildQueue', { connection }); // await buildQueue.obliterate({ force: true }); -console.log("Queue cleared!"); \ No newline at end of file +logger.info("Build queue initialized"); \ No newline at end of file diff --git a/api-gateway/src/Queue/clone-queue.ts b/api-gateway/src/Queue/clone-queue.ts index ac702fd..18da1ef 100644 --- a/api-gateway/src/Queue/clone-queue.ts +++ b/api-gateway/src/Queue/clone-queue.ts @@ -1,5 +1,6 @@ import { Queue } from 'bullmq'; import {Redis} from 'ioredis'; +import logger from "../logger/logger.js"; const connection = new Redis({ host:process.env.REDIS_HOST || "internal-redis", port: 6379 @@ -7,4 +8,4 @@ const connection = new Redis({ export const cloneQueue = new Queue('cloneQueue', { connection }); await cloneQueue.obliterate({ force: true }); -console.log("Queue cleared!"); \ No newline at end of file +logger.info("Clone queue initialized"); \ No newline at end of file diff --git a/api-gateway/src/consumer.ts b/api-gateway/src/consumer.ts index 928331a..ebff8b6 100644 --- a/api-gateway/src/consumer.ts +++ b/api-gateway/src/consumer.ts @@ -7,6 +7,7 @@ import { import { repoAnalysisSuccessHandler } from "./controllers/internalService.controller.js"; import dotenv from 'dotenv'; +import logger from "./logger/logger.js"; dotenv.config(); const sqs = new SQSClient({ @@ -33,7 +34,7 @@ export async function pollQueue() { for (const msg of res.Messages) { try { - console.log('Received:', msg.Body); + logger.info('Received message from SQS:', { body: msg.Body }); const event = JSON.parse(msg.Body!); @@ -46,7 +47,7 @@ export async function pollQueue() { }) ); } catch (err) { - console.error("Processing failed:", err); + logger.error("SQS message processing failed:", { error: err }); } } } @@ -87,14 +88,14 @@ async function handleEvent(event: any) { async function onRepoAnalysisSuccess(event: any) { const { projectId, deploymentId } = event; const { commitHash, commitMessage, config } = event.payload - console.log(projectId, deploymentId, commitHash, commitMessage); + logger.info("Repo analysis success event received", { projectId, deploymentId, commitHash, commitMessage }); repoAnalysisSuccessHandler(projectId, config, deploymentId, commitHash, commitMessage) - console.log("onRepoAnalysisSuccess"); + logger.debug("Processing repo analysis success event"); } async function AnalysisFailed(event: any) { // update stage of deployment to failed + frontend udpate with issue - console.log("AnalysisFailed"); + logger.info("Repo analysis failed event received"); } /* ---------------- PRE BUILD QUEUE STAGE ---------------- */ diff --git a/api-gateway/src/controllers/auth.controller.ts b/api-gateway/src/controllers/auth.controller.ts index 402963c..cb32d63 100644 --- a/api-gateway/src/controllers/auth.controller.ts +++ b/api-gateway/src/controllers/auth.controller.ts @@ -10,6 +10,7 @@ import User from "../models/user.model.js"; import ApiResponse from "../utils/api-utils/ApiResponse.js"; import { verifyJwt } from "../middlewares/auth.middlewares.js"; import jwt from "jsonwebtoken"; +import logger from "../logger/logger.js"; // LOGIN CONTROLLER const LoginController = asyncHandler(async (req: Request, res: Response) => { @@ -70,7 +71,7 @@ const CallbackController = asyncHandler(async (req: Request, res: Response) => { } catch (err: any) { if (err instanceof ApiError) throw err; - console.error(err); + logger.error("GitHub OAuth Error", { error: err }); throw new ApiError(500, "GitHub OAuth Error"); } @@ -98,9 +99,9 @@ const logOutController = asyncHandler(async (req: Request, res: Response) => { } // Destroy session - req.session.destroy(err => { + req.session.destroy((err: any) => { if (err) { - console.error("Error while destroying session: ", err); + logger.error("Error while destroying session: ", { error: err }); } }); diff --git a/api-gateway/src/controllers/env.controller.ts b/api-gateway/src/controllers/env.controller.ts index 0e56fc7..22a2539 100644 --- a/api-gateway/src/controllers/env.controller.ts +++ b/api-gateway/src/controllers/env.controller.ts @@ -2,6 +2,7 @@ import { Request, Response } from "express"; import asyncHandler from "../utils/api-utils/asyncHandler.js"; import ApiError from "../utils/api-utils/ApiError.js"; import {Project} from "@veren/domain"; +import logger from "../logger/logger.js"; const updateEnv = asyncHandler(async (req: Request, res: Response) => { const { projectId } = req.params; @@ -34,7 +35,7 @@ const updateEnv = asyncHandler(async (req: Request, res: Response) => { return res.status(200).json(updatedProject); } catch (error) { - console.error(error); + logger.error("Server error updating environment variables", { error: error }); return res.status(500).json({ message: "Server error" }); } }) diff --git a/api-gateway/src/controllers/healthCheck.controller.ts b/api-gateway/src/controllers/healthCheck.controller.ts index 0601100..4924833 100644 --- a/api-gateway/src/controllers/healthCheck.controller.ts +++ b/api-gateway/src/controllers/healthCheck.controller.ts @@ -1,6 +1,7 @@ import { Request, Response } from "express"; +import logger from "../logger/logger.js"; export default function healthCheck(req: Request, res: Response){ - console.log("Everything is working fine in api-gateway end !"); + logger.info("API Gateway health check endpoint accessed"); res.status(200).json({msg:"OKAY ITS WORKING"}) } \ No newline at end of file diff --git a/api-gateway/src/controllers/projects.controller.ts b/api-gateway/src/controllers/projects.controller.ts index b237d45..fa50936 100644 --- a/api-gateway/src/controllers/projects.controller.ts +++ b/api-gateway/src/controllers/projects.controller.ts @@ -3,6 +3,7 @@ import {Project, IProject} from "@veren/domain"; import ApiError from "../utils/api-utils/ApiError.js"; import ApiResponse from "../utils/api-utils/ApiResponse.js"; import asyncHandler from "../utils/api-utils/asyncHandler.js"; +import logger from "../logger/logger.js"; /* THIS IS ONLY ACCESIBLE TO FRONTEND USER */ const createProject = asyncHandler(async (req: Request, res: Response) => { @@ -63,17 +64,17 @@ const createProject = asyncHandler(async (req: Request, res: Response) => { project = await Project.create(projectData) } catch (error: any) { if (error.code == 11000) { - console.log("INSIDE MONGO ERROR CATCHED", error.message) + logger.error("MongoDB duplicate key error", { message: error.message }); return res.status(409).json({ error: "Project name already taken" }) } - console.log("INSIDE MONGO ERROR CATCHED", error.message) + logger.error("MongoDB error in project creation", { message: error.message }); throw new ApiError(500, "Internal server error"); } if (!project) { - console.log("Not of project error") + logger.error("Project creation failed - no project returned"); throw new ApiError(500, "Unable to Create Project At the moment."); } diff --git a/api-gateway/src/controllers/repo.controller.ts b/api-gateway/src/controllers/repo.controller.ts index ef3e9cc..fd04809 100644 --- a/api-gateway/src/controllers/repo.controller.ts +++ b/api-gateway/src/controllers/repo.controller.ts @@ -1,4 +1,5 @@ import { Request, Response } from "express"; +import logger from "../logger/logger.js"; export async function getAllRepositoryOfCurrentUser(req: Request, res: Response) { @@ -44,7 +45,7 @@ export async function getAllRepositoryOfCurrentUser(req: Request, res: Response) }) } catch (error: any) { - console.error(error); + logger.error("Error fetching Github repos", { error: error }); res.status(500).json({ success: false, message: "Error fetching Github repos", @@ -219,7 +220,7 @@ export async function repoFinder(req: Request, res: Response) { return res.json(dedup(publicRepos)); } catch (err) { - console.error(err); + logger.error("Server error in repo finder", { error: err }); return res.status(500).json({ error: "Server error" }); } } diff --git a/api-gateway/src/controllers/router.controller.ts b/api-gateway/src/controllers/router.controller.ts index 365c1b3..98473ce 100644 --- a/api-gateway/src/controllers/router.controller.ts +++ b/api-gateway/src/controllers/router.controller.ts @@ -1,5 +1,6 @@ import { Request, Response } from "express"; import axios from "axios"; +import logger from "../logger/logger.js"; // HANDLE URL PATH (FORWARD FOR PREPROCESSING) export async function RouteHandler(req: Request, res: Response) { @@ -10,7 +11,7 @@ export async function RouteHandler(req: Request, res: Response) { { timeout: 10000 } ); - console.log("Response from router service:", response.data); + logger.info("Response from router service:", { data: response.data }); return res.json({ success: true, diff --git a/api-gateway/src/db/postgresDb.ts b/api-gateway/src/db/postgresDb.ts index 649815d..b17c22b 100644 --- a/api-gateway/src/db/postgresDb.ts +++ b/api-gateway/src/db/postgresDb.ts @@ -1,4 +1,5 @@ import { Pool, Client } from 'pg'; +import logger from "../logger/logger.js"; const user = process.env.POSTGRES_USER const password = process.env.POSTGRES_PASSWORD @@ -21,7 +22,7 @@ async function testConnection() { try { } catch (error) { - console.error('Error connecting to the POSTGRES:', error); + logger.error('Error connecting to the POSTGRES:', { error }); } } diff --git a/api-gateway/src/index.ts b/api-gateway/src/index.ts index 66bcd7e..e839f13 100644 --- a/api-gateway/src/index.ts +++ b/api-gateway/src/index.ts @@ -17,12 +17,12 @@ async function init() { // Start SQS polling concurrently (async function pollLoop() { - console.log("Polling SQS..."); + logger.info("Starting SQS polling..."); while (true) { try { await pollQueue(); } catch (err) { - console.error("Polling error:", err); + logger.error("SQS polling error:", { error: err }); } } })(); diff --git a/api-gateway/src/middlewares/auth.middlewares.ts b/api-gateway/src/middlewares/auth.middlewares.ts index c849827..e7e3b1c 100644 --- a/api-gateway/src/middlewares/auth.middlewares.ts +++ b/api-gateway/src/middlewares/auth.middlewares.ts @@ -3,6 +3,7 @@ import User from "../models/user.model.js"; import ApiError from "../utils/api-utils/ApiError.js"; import asyncHandler from "../utils/api-utils/asyncHandler.js"; import { Request, Response, NextFunction } from "express"; +import logger from "../logger/logger.js"; interface AuthRequest extends Request { user?: { @@ -17,11 +18,11 @@ export const verifyJwt = asyncHandler( const token = req.cookies?.accessToken || req.headers.authorization?.split(" ")[1]; -console.log(req.cookies, req.headers) + logger.debug("Checking authentication", { cookies: req.cookies, headers: req.headers }); if (!token) { throw new ApiError(401, "No access token provided"); } -console.log(req.cookies, req.headers) + logger.debug("Checking authentication", { cookies: req.cookies, headers: req.headers }); const ACCESS_TOKEN_SECRET = process.env.ACCESS_TOKEN_SECRET; if (!ACCESS_TOKEN_SECRET) { throw new ApiError(500, "Access token secret not configured"); @@ -41,7 +42,7 @@ console.log(req.cookies, req.headers) if (!user) { throw new ApiError(404, "User not found"); } - console.log(user); + logger.debug("Authenticated user", { user: user._id }); req.user = { id: user._id.toString(), provider: user.provider, diff --git a/notification-service/src/controllers/logs.controller.ts b/notification-service/src/controllers/logs.controller.ts index 638da89..6da29fd 100644 --- a/notification-service/src/controllers/logs.controller.ts +++ b/notification-service/src/controllers/logs.controller.ts @@ -2,6 +2,7 @@ import { createClient } from '@clickhouse/client' import path from "path"; import fs from "fs"; import { Kafka } from "kafkajs"; +import logger from "../logger/logger.js"; const client = createClient({ host: process.env.CLICKHOUSE_HOST, @@ -62,7 +63,7 @@ async function flushToClickHouse() { format: 'JSONEachRow' }); } catch (error) { - console.log(`Error while pushing to clickhouse`, error); + logger.error(`Error while pushing to clickhouse`, { error }); buffer = rows.concat(buffer).slice(0,10_000); } finally { @@ -82,13 +83,13 @@ export default async function initkafkaConsumer() { const raw = message.value?.toString(); if (!raw) return; - console.log(`[${topic}] ${message.offset}: ${raw}`); + logger.info(`[${topic}] ${message.offset}: ${raw}`); let payload; try { payload = JSON.parse(raw); } catch (error) { - console.error('Invalid JSON:', raw); + logger.error('Invalid JSON:', { raw }); return; } @@ -102,17 +103,17 @@ export default async function initkafkaConsumer() { }); if (buffer.length >= BATCH_SIZE) { - flushToClickHouse().catch(err => - console.error("Async flush failed", err) - ); + flushToClickHouse().catch((err) => { + logger.error("Async flush failed", { error: err }); + }); } if (!flushTimer) { flushTimer = setTimeout(async () => { flushTimer = null; - flushToClickHouse().catch(err => - console.error("Async flush failed", err) - ); + flushToClickHouse().catch((err) => { + logger.error("Async flush failed", { error: err }); + }); }, FLUSH_INTERVAL_MS) } diff --git a/orchestrate-service/src/controllers/container.controller.ts b/orchestrate-service/src/controllers/container.controller.ts index 00784cb..a453cc1 100644 --- a/orchestrate-service/src/controllers/container.controller.ts +++ b/orchestrate-service/src/controllers/container.controller.ts @@ -1,6 +1,7 @@ import {Request, Response} from 'express' import ApiResponse from '../utils/api-utils/ApiResponse.js' import Docker from 'dockerode' +import logger from "../logger/logger.js" const docker = new Docker({ socketPath: "/var/run/docker.sock" }); @@ -23,7 +24,7 @@ export async function containerRouter(req: Request, res: Response){ const imageName = `${image}:${tag}`; if(!imageAlreadyExist){ - console.log(`Pulling Image: ${imageName}`); + logger.info(`Pulling Image: ${imageName}`); await docker.pull(imageName); } diff --git a/routing-service/src/app.ts b/routing-service/src/app.ts index 6447f46..56d6504 100644 --- a/routing-service/src/app.ts +++ b/routing-service/src/app.ts @@ -6,6 +6,7 @@ import { errorHandler } from "./middlewares/error.middlewares.js"; import httpProxy from "http-proxy"; import healthCheckRouter from './routes/healthCheck.route.js' import { subscriber } from "./socket.js"; +import logger from "./logger/logger.js"; const app = express(); app.use(morganMiddleware()); @@ -32,7 +33,7 @@ app.use((req,res)=>{ const hostname = req.hostname; const subdomain = hostname.split('.')[0]; const resolvesTo = `${BASEPATH}${subdomain}` - console.log(subdomain) + logger.info("Routing request to subdomain", { subdomain }); proxy.web(req,res,{target: resolvesTo,changeOrigin: true}) }) @@ -48,18 +49,18 @@ proxy.on('proxyReq', (proxyReq, req, res)=>{ const helper = async ()=>{ await subscriber.connect(); subscriber.on('error',()=>{ - console.log(`Error connecting to Redis`); + logger.error(`Error connecting to Redis`); }) // backend deployment check subscriber.pSubscribe('backend_builder_logs:*', (message, channel)=>{ - console.log("CHANNEL : ", channel) - console.log("MESSAGE : ", message) + logger.info("Redis subscription - CHANNEL : ", { channel }); + logger.info("Redis subscription - MESSAGE : ", { message }); }) // frontend deployment check subscriber.pSubscribe('logs:*', (message, channel)=>{ - console.log("CHANNEL : ", channel) - console.log("MESSAGE : ", message) + logger.info("Redis subscription - CHANNEL : ", { channel }); + logger.info("Redis subscription - MESSAGE : ", { message }); }) } helper();