From a748563c13992d112509cc1cf10ab5d79a4e87a1 Mon Sep 17 00:00:00 2001 From: shnimlz Date: Sat, 11 Oct 2025 20:11:24 -0500 Subject: [PATCH] =?UTF-8?q?Refactor=20la=20configuraci=C3=B3n=20del=20logg?= =?UTF-8?q?er=20para=20cargar=20variables=20de=20entorno=20desde=20.env=20?= =?UTF-8?q?y=20mejorar=20la=20detecci=C3=B3n=20de=20compilaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/lib/logger.ts | 56 +++++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/src/core/lib/logger.ts b/src/core/lib/logger.ts index 7be9f05..939daf9 100644 --- a/src/core/lib/logger.ts +++ b/src/core/lib/logger.ts @@ -1,22 +1,48 @@ -import pino from 'pino'; +import fs from "fs"; +import path from "path"; +import dotenv from "dotenv"; +import pino from "pino"; + +// 🩹 Extender el tipo global de process para evitar error de TS +declare global { + namespace NodeJS { + interface Process { + pkg?: any; + BUN_COMPILED?: boolean; + } + } +} + +// 🔹 Cargar .env manualmente si existe +const envPath = path.resolve(process.cwd(), ".env"); +if (fs.existsSync(envPath)) { + dotenv.config({ path: envPath }); + console.log("✅ .env cargado desde", envPath); +} else { + console.warn("⚠️ No se encontró archivo .env, usando variables del entorno"); +} + +// 🔹 Detectar si está compilado con Bun o pkg +const isCompiled = !!process.pkg || !!process.env.BUN_COMPILED; + +// 🔹 Configurar transporte solo si NO estamos en producción y NO es compilado +const usePretty = process.env.NODE_ENV !== "production" && !isCompiled; -// Configurar pino con opciones optimizadas para producción export const logger = pino({ - level: process.env.LOG_LEVEL || 'info', - transport: process.env.NODE_ENV !== 'production' ? { - target: 'pino-pretty', + level: process.env.LOG_LEVEL || "info", + transport: usePretty + ? { + target: "pino-pretty", options: { - colorize: true, - translateTime: 'HH:MM:ss Z', - ignore: 'pid,hostname', - } - } : undefined, - formatters: { - level: (label) => { - return { level: label }; + colorize: true, + translateTime: "HH:MM:ss Z", + ignore: "pid,hostname", }, - }, + } + : undefined, + formatters: { + level: (label) => ({ level: label }), + }, }); export default logger; -