From 0da6d0728389091b7cf27f3ef410eb659dc4db99 Mon Sep 17 00:00:00 2001 From: Sven laptop Date: Wed, 23 Sep 2026 18:29:46 +0200 Subject: [PATCH] Add local logging to all microservices; auto-create error_log table on startup --- auth_api/index.js | 5 +++++ employee_api/index.js | 5 +++++ error_log_api/index.js | 28 +++++++++++++++++++++++++++- transit_api/index.js | 5 +++++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/auth_api/index.js b/auth_api/index.js index d453b77..a8d783b 100644 --- a/auth_api/index.js +++ b/auth_api/index.js @@ -4,6 +4,11 @@ const jwt = require("jsonwebtoken"); const db = require("./db"); require("dotenv").config(); +function log(level, message, meta = {}) { + const timestamp = new Date().toISOString(); + console.log(JSON.stringify({ timestamp, level, service: "auth_api", message, ...meta })); +} + const app = express(); app.use(express.json()); diff --git a/employee_api/index.js b/employee_api/index.js index e6ea7f1..b7327f5 100644 --- a/employee_api/index.js +++ b/employee_api/index.js @@ -3,6 +3,11 @@ const bcrypt = require("bcryptjs"); const db = require("./db"); require("dotenv").config(); +function log(level, message, meta = {}) { + const timestamp = new Date().toISOString(); + console.log(JSON.stringify({ timestamp, level, service: "employee_api", message, ...meta })); +} + const app = express(); app.use(express.json()); diff --git a/error_log_api/index.js b/error_log_api/index.js index d557460..a5c4a87 100644 --- a/error_log_api/index.js +++ b/error_log_api/index.js @@ -5,6 +5,29 @@ require("dotenv").config(); const db = require("./db"); +function log(level, message, meta = {}) { + const timestamp = new Date().toISOString(); + console.log(JSON.stringify({ timestamp, level, service: "error_log_api", message, ...meta })); +} + +async function ensureErrorLogTable() { + try { + await db.query(`CREATE SCHEMA IF NOT EXISTS data`); + await db.query(` + CREATE TABLE IF NOT EXISTS data.errors ( + id BIGSERIAL PRIMARY KEY, + "date" TIMESTAMPTZ NOT NULL DEFAULT NOW(), + "service" TEXT NOT NULL, + partofservice TEXT, + error TEXT NOT NULL + ) + `); + console.log("Error log table ready"); + } catch (err) { + console.error("Failed to create error log table:", err); + } +} + const app = express(); app.use(express.json({ limit: "64kb" })); app.use(cors()); @@ -186,6 +209,9 @@ app.use(async (err, req, res, _next) => { return res.status(500).json({ error: toFriendlyError(500) }); }); -app.listen(PORT, () => console.log(`Error Log API listening on ${PORT}`)); +app.listen(PORT, async () => { + await ensureErrorLogTable(); + console.log(`Error Log API listening on ${PORT}`); +}); module.exports = app; diff --git a/transit_api/index.js b/transit_api/index.js index f90cec0..9786123 100644 --- a/transit_api/index.js +++ b/transit_api/index.js @@ -5,6 +5,11 @@ require("dotenv").config(); const db = require("./db"); const { authMiddleware } = require("./middleware"); +function log(level, message, meta = {}) { + const timestamp = new Date().toISOString(); + console.log(JSON.stringify({ timestamp, level, service: "transit_api", message, ...meta })); +} + const app = express(); app.use(express.json()); app.use(cors());