refactor logger

This commit is contained in:
Alex Holliday
2025-07-28 15:03:28 -07:00
parent f3e50120ee
commit de80a530e5
6 changed files with 28 additions and 31 deletions
+5 -3
View File
@@ -33,14 +33,16 @@ import mjml2html from "mjml";
import jwt from "jsonwebtoken";
import crypto from "crypto";
export const initializeServices = async (envSettings, settingsService) => {
export const initializeServices = async ({ logger, envSettings, settingsService }) => {
const serviceRegistry = new ServiceRegistry({ logger });
const translationService = new TranslationService(logger);
await translationService.initialize();
const stringService = new StringService(translationService);
// Create DB
const db = new MongoDB({ envSettings });
const db = new MongoDB({ logger, envSettings });
await db.connect();
const networkService = new NetworkService(axios, ping, logger, http, Docker, net, stringService, settingsService);
@@ -144,7 +146,7 @@ export const initializeServices = async (envSettings, settingsService) => {
};
Object.values(services).forEach((service) => {
ServiceRegistry.register(service.serviceName, service);
serviceRegistry.register(service.serviceName, service);
});
return services;
-8
View File
@@ -103,12 +103,4 @@ UserSchema.methods.comparePassword = async function (submittedPassword) {
const User = mongoose.model("User", UserSchema);
User.init().then(() => {
logger.info({
message: "User model initialized",
service: "UserModel",
method: "init",
});
});
export default User;
+7 -7
View File
@@ -1,6 +1,5 @@
import mongoose from "mongoose";
import AppSettings from "../models/AppSettings.js";
import logger from "../../utils/logger.js";
//****************************************
// User Operations
@@ -70,7 +69,8 @@ import * as diagnosticModule from "./modules/diagnosticModule.js";
class MongoDB {
static SERVICE_NAME = "MongoDB";
constructor({ envSettings }) {
constructor({ logger, envSettings }) {
this.logger = logger;
this.envSettings = envSettings;
Object.assign(this, userModule);
Object.assign(this, inviteModule);
@@ -110,13 +110,13 @@ class MongoDB {
await model.syncIndexes();
}
logger.info({
this.logger.info({
message: "Connected to MongoDB",
service: this.SERVICE_NAME,
method: "connect",
});
} catch (error) {
logger.error({
this.logger.error({
message: error.message,
service: this.SERVICE_NAME,
method: "connect",
@@ -128,12 +128,12 @@ class MongoDB {
disconnect = async () => {
try {
logger.info({ message: "Disconnecting from MongoDB" });
this.logger.info({ message: "Disconnecting from MongoDB" });
await mongoose.disconnect();
logger.info({ message: "Disconnected from MongoDB" });
this.logger.info({ message: "Disconnected from MongoDB" });
return;
} catch (error) {
logger.error({
this.logger.error({
message: error.message,
service: this.SERVICE_NAME,
method: "disconnect",
+7 -2
View File
@@ -2,15 +2,16 @@ import { initializeServices } from "./config/services.js";
import { initializeControllers } from "./config/controllers.js";
import { createApp } from "./app.js";
import { initShutdownListener } from "./shutdown.js";
import logger from "./utils/logger.js";
import { fileURLToPath } from "url";
import path from "path";
import fs from "fs";
import Logger from "./utils/logger.js";
import SettingsService from "./service/system/settingsService.js";
import AppSettings from "./db/models/AppSettings.js";
const SERVICE_NAME = "Server";
let logger;
const startApp = async () => {
// FE path
@@ -18,12 +19,16 @@ const startApp = async () => {
const __dirname = path.dirname(__filename);
const openApiSpec = JSON.parse(fs.readFileSync(path.join(__dirname, "../openapi.json"), "utf8"));
const frontendPath = path.join(__dirname, "public");
// Create services
const settingsService = new SettingsService(AppSettings);
const envSettings = settingsService.loadSettings();
// Create logger
logger = new Logger({ envSettings });
// Initialize services
const services = await initializeServices(envSettings, settingsService);
const services = await initializeServices({ logger, envSettings, settingsService });
// Initialize controllers
const controllers = initializeControllers(services);
+5 -5
View File
@@ -1,9 +1,9 @@
const SERVICE_NAME = "ServiceRegistry";
import logger from "../../utils/logger.js";
class ServiceRegistry {
static SERVICE_NAME = SERVICE_NAME;
constructor() {
constructor({ logger }) {
this.services = {};
this.logger = logger;
}
get serviceName() {
@@ -11,7 +11,7 @@ class ServiceRegistry {
}
register(name, service) {
logger.info({
this.logger.info({
message: `Registering service ${name}`,
service: SERVICE_NAME,
method: "register",
@@ -21,7 +21,7 @@ class ServiceRegistry {
get(name) {
if (!this.services[name]) {
logger.error({
this.logger.error({
message: `Service ${name} is not registered`,
service: SERVICE_NAME,
method: "get",
@@ -36,4 +36,4 @@ class ServiceRegistry {
}
}
export default new ServiceRegistry();
export default ServiceRegistry;
+4 -6
View File
@@ -6,7 +6,8 @@ const SERVICE_NAME = "Logger";
class Logger {
static SERVICE_NAME = SERVICE_NAME;
constructor() {
constructor({ envSettings }) {
this.envSettings = envSettings;
this.logCache = [];
this.maxCacheSize = 1000;
const consoleFormat = format.printf(({ level, message, service, method, details, timestamp, stack }) => {
@@ -45,7 +46,7 @@ class Logger {
return msg;
});
const logLevel = process.env.LOG_LEVEL || "info";
const logLevel = this.envSettings.logLevel || "info";
this.logger = createLogger({
level: logLevel,
@@ -145,7 +146,4 @@ class Logger {
}
}
const logger = new Logger();
export { Logger };
export default logger;
export default Logger;