Refactor logger and error handling modules

Moved isTrueFromDotEnv to logger.js and updated its usage. Simplified logger import and instantiation across modules. Added errors.js for centralized error exports. Set default error code in DefaultError. Cleaned up unused imports in utils.js.
This commit is contained in:
Gilles Lazures 2026-01-27 04:08:46 +01:00
parent c531f2c82c
commit 2e30763da5
5 changed files with 11 additions and 8 deletions

View File

@ -1,7 +1,7 @@
class DefaultError extends Error { class DefaultError extends Error {
constructor(code, message, cause, name) { constructor(code, message, cause, name) {
super(message) super(message)
this.code = code this.code = code || 500
this.name = name || "DefaultError" this.name = name || "DefaultError"
this.cause = cause || "Internal Server Error" this.cause = cause || "Internal Server Error"
this.message = message || "Internal Server Error" this.message = message || "Internal Server Error"

3
errors/errors.js Normal file
View File

@ -0,0 +1,3 @@
module.exports = {
DefaultError: require("./DefaultError")
}

View File

@ -1,6 +1,5 @@
const fs = require("node:fs") const fs = require("node:fs")
const path = require("node:path") const path = require("node:path")
const utils = require("./utils")
require("colors") require("colors")
require("dotenv").config({ require("dotenv").config({
quiet: true quiet: true
@ -41,7 +40,7 @@ function write($stream, level, color, content, extraLabels = []) {
function createLogger(root) { function createLogger(root) {
// eslint-disable-next-line no-useless-escape // eslint-disable-next-line no-useless-escape
const fileName = utils.isTrueFromDotEnv("IS_PROD") ? new Date().toLocaleString("fr-FR", { timeZone: "UTC" }).replace(/[\/:]/g, "-").replace(/ /g, "_") : "DEV-LOG" const fileName = isTrueFromDotEnv("IS_PROD") ? new Date().toLocaleString("fr-FR", { timeZone: "UTC" }).replace(/[\/:]/g, "-").replace(/ /g, "_") : "DEV-LOG"
const logsDir = path.join(root, "logs") const logsDir = path.join(root, "logs")
@ -84,6 +83,10 @@ function stripColors(string) {
return string.replace(/\x1B\[[0-9;]*[mK]/g, "") return string.replace(/\x1B\[[0-9;]*[mK]/g, "")
} }
function isTrueFromDotEnv(key) {
return (process.env[key] || "").trim().toLowerCase() === "true"
}
const logger = createLogger(process.cwd()) const logger = createLogger(process.cwd())
module.exports = logger module.exports = logger

View File

@ -1,6 +1,4 @@
const path = require("node:path") const logger = require("./logger")
const Logger = require("./logger")
const logger = Logger.createLogger(path.join(__dirname, ".."))
function sendValidationError(req, res, zodResult, type, path, errorConfig) { function sendValidationError(req, res, zodResult, type, path, errorConfig) {
const ip = req.headers["x-forwarded-for"] || req.socket.remoteAddress const ip = req.headers["x-forwarded-for"] || req.socket.remoteAddress

View File

@ -4,8 +4,7 @@ const app = express()
const cors = require("cors") const cors = require("cors")
const path = require("node:path") const path = require("node:path")
const utils = require("./modules/utils") const utils = require("./modules/utils")
const Logger = require("./modules/logger") const logger = require("./modules/logger")
const logger = Logger.createLogger(__dirname)
const helmet = require("helmet") const helmet = require("helmet")
const loader = require("./modules/loader") const loader = require("./modules/loader")
const DefaultError = require("./errors/DefaultError") const DefaultError = require("./errors/DefaultError")