lognerd 1.0.1 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # lognerd
2
2
 
3
- Sistema de logging con colores y escritura a archivo para Node.js. Desarrollado con TypeScript y diseñado para ser fácil de usar y configurar.
3
+ Sistema de logging con colores y escritura a archivo para **Node.js (Backend)** y **Navegador (Frontend)**. Desarrollado con TypeScript y diseñado para ser fácil de usar y configurar. Compatible con Vite, Next.js y otros entornos.
4
4
 
5
5
  ## 🚀 Instalación
6
6
 
@@ -68,18 +68,43 @@ Puedes configurar lognerd completamente mediante variables de entorno. Esto es i
68
68
 
69
69
  | Variable (Node.js/Next.js) | Variable (Vite) | Descripción | Valores | Por defecto |
70
70
  |----------------------------|-----------------|-------------|---------|-------------|
71
+ | **`LOG_ENVIRONMENT`** | **`VITE_LOG_ENVIRONMENT`** | **Entorno de ejecución (OBLIGATORIO)** | **`B`, `BACKEND`, `C`, `CLIENT`** | **Auto-detecta** |
71
72
  | `LOGNERD_LEVEL` | `VITE_LOGNERD_LEVEL` | Nivel mínimo de log | `DEBUG`, `INFO`, `WARN`, `ERROR` | `INFO` |
72
73
  | `LOGNERD_ENVIRONMENT` | `VITE_LOGNERD_ENVIRONMENT` | Entorno de ejecución | `development`, `production` | `development` |
73
74
  | `NODE_ENV` | `NODE_ENV` | También se puede usar (compatible) | `development`, `production` | - |
74
75
  | `LOGNERD_ENABLE_CONSOLE` | `VITE_LOGNERD_ENABLE_CONSOLE` | Habilitar salida en consola | `true`, `false`, `1`, `0` | `true` |
75
- | `LOGNERD_ENABLE_FILE` | `VITE_LOGNERD_ENABLE_FILE` | Habilitar escritura en archivo | `true`, `false`, `1`, `0` | `true` |
76
+ | `LOGNERD_ENABLE_FILE` | `VITE_LOGNERD_ENABLE_FILE` | Habilitar escritura en archivo | `true`, `false`, `1`, `0` | `true` (solo backend) |
76
77
  | `LOGNERD_FILE_PATH` | `VITE_LOGNERD_FILE_PATH` | Ruta del archivo de log | Ruta relativa o absoluta | `./logs/app.log` |
77
78
  | `LOGNERD_MAX_FILE_SIZE` | `VITE_LOGNERD_MAX_FILE_SIZE` | Tamaño máximo del archivo en MB | Número entero | `10` |
78
79
  | `LOGNERD_MAX_FILES` | `VITE_LOGNERD_MAX_FILES` | Número máximo de archivos rotados | Número entero | `5` |
79
80
 
80
- **Ejemplo para Node.js/Next.js:**
81
+ ### ⚠️ LOG_ENVIRONMENT (Importante)
82
+
83
+ Esta variable determina si el código se ejecuta en **backend** (Node.js) o **client** (navegador):
84
+
85
+ - **`LOG_ENVIRONMENT=B`** o **`LOG_ENVIRONMENT=BACKEND`**: Para backend (Node.js)
86
+ - ✅ Permite escritura de archivos
87
+ - ✅ Usa `fs` y `path` de Node.js
88
+ - ✅ Escritura de logs en archivos locales
89
+
90
+ - **`LOG_ENVIRONMENT=C`** o **`LOG_ENVIRONMENT=CLIENT`**: Para cliente (navegador)
91
+ - ✅ Deshabilita escritura de archivos automáticamente
92
+ - ✅ Solo muestra logs en consola del navegador
93
+ - ✅ Compatible con Vite y otros bundlers
94
+
95
+ **Detección automática:**
96
+ Si no se configura `LOG_ENVIRONMENT`, se detecta automáticamente:
97
+ - Si está en Node.js → `backend`
98
+ - Si está en navegador → `client`
99
+
100
+ **Mensajes de error claros:**
101
+ - Si `LOG_ENVIRONMENT=B` pero se ejecuta en navegador → Error descriptivo
102
+ - Si `LOG_ENVIRONMENT=C` pero se intenta escribir archivos → Advertencia automática
103
+
104
+ **Ejemplo para Node.js/Next.js (Backend):**
81
105
  ```bash
82
106
  # .env
107
+ LOG_ENVIRONMENT=B
83
108
  LOGNERD_LEVEL=INFO
84
109
  LOGNERD_ENVIRONMENT=development
85
110
  LOGNERD_ENABLE_CONSOLE=true
@@ -89,26 +114,34 @@ LOGNERD_MAX_FILE_SIZE=10
89
114
  LOGNERD_MAX_FILES=5
90
115
  ```
91
116
 
92
- **Ejemplo para Vite:**
117
+ **Ejemplo para Vite (Cliente/Navegador):**
93
118
  ```bash
94
119
  # .env
120
+ VITE_LOG_ENVIRONMENT=C
95
121
  VITE_LOGNERD_LEVEL=INFO
96
122
  VITE_LOGNERD_ENVIRONMENT=development
97
123
  VITE_LOGNERD_ENABLE_CONSOLE=true
98
- VITE_LOGNERD_ENABLE_FILE=true
99
- VITE_LOGNERD_FILE_PATH=./logs/app.log
100
- VITE_LOGNERD_MAX_FILE_SIZE=10
101
- VITE_LOGNERD_MAX_FILES=5
124
+ # VITE_LOGNERD_ENABLE_FILE se ignora en cliente (siempre false)
102
125
  ```
103
126
 
104
- **Ejemplo para producción (Vite):**
127
+ **Ejemplo para producción (Vite - Cliente):**
105
128
  ```bash
106
129
  # .env.production
130
+ VITE_LOG_ENVIRONMENT=C
107
131
  VITE_LOGNERD_LEVEL=WARN
108
132
  VITE_LOGNERD_ENVIRONMENT=production
109
- VITE_LOGNERD_FILE_PATH=./logs/production.log
110
- VITE_LOGNERD_MAX_FILE_SIZE=50
111
- VITE_LOGNERD_MAX_FILES=10
133
+ # La escritura de archivos está deshabilitada en cliente
134
+ ```
135
+
136
+ **Ejemplo para producción (Backend):**
137
+ ```bash
138
+ # .env.production
139
+ LOG_ENVIRONMENT=B
140
+ LOGNERD_LEVEL=WARN
141
+ LOGNERD_ENVIRONMENT=production
142
+ LOGNERD_FILE_PATH=./logs/production.log
143
+ LOGNERD_MAX_FILE_SIZE=50
144
+ LOGNERD_MAX_FILES=10
112
145
  ```
113
146
 
114
147
  ### Configuración mediante Código
@@ -118,15 +151,25 @@ También puedes configurar el logger mediante código TypeScript:
118
151
  ```typescript
119
152
  import { createLogger } from 'lognerd';
120
153
 
121
- const logger = createLogger({
154
+ // Para backend
155
+ const backendLogger = createLogger({
156
+ runtimeEnvironment: 'backend', // o 'client' para navegador
122
157
  level: 'DEBUG', // Nivel mínimo de log: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR'
123
158
  environment: 'development', // 'development' | 'production'
124
159
  enableConsole: true, // Habilitar salida en consola
125
- enableFile: true, // Habilitar escritura en archivo
160
+ enableFile: true, // Habilitar escritura en archivo (solo backend)
126
161
  filePath: './logs/app.log', // Ruta del archivo de log
127
162
  maxFileSize: 10, // Tamaño máximo del archivo en MB (default: 10)
128
163
  maxFiles: 5, // Número máximo de archivos de log rotados (default: 5)
129
164
  });
165
+
166
+ // Para cliente (navegador)
167
+ const clientLogger = createLogger({
168
+ runtimeEnvironment: 'client',
169
+ level: 'INFO',
170
+ enableConsole: true,
171
+ enableFile: false, // Se deshabilita automáticamente en cliente
172
+ });
130
173
  ```
131
174
 
132
175
  **Nota:** La configuración mediante código tiene prioridad sobre las variables de entorno. El orden de prioridad es: `código > variables de entorno > valores por defecto`.
@@ -150,24 +193,31 @@ NODE_ENV=production LOGNERD_LEVEL=WARN
150
193
 
151
194
  ## 🎨 Características
152
195
 
196
+ - ✅ **Soporte Backend y Frontend**: Funciona en Node.js y navegador
153
197
  - ✅ **Niveles de log**: ERROR, WARN, INFO, DEBUG
154
198
  - ✅ **Colores en consola** para desarrollo (rojo para ERROR, amarillo para WARN, cyan para INFO, magenta para DEBUG)
155
- - ✅ **Escritura automática a archivo** (siempre activa, incluso en producción)
199
+ - ✅ **Escritura automática a archivo** (solo en backend, deshabilitada automáticamente en cliente)
200
+ - ✅ **Detección automática de entorno** (backend/client) o configuración manual con `LOG_ENVIRONMENT`
201
+ - ✅ **Mensajes de error claros** cuando hay configuración incorrecta
156
202
  - ✅ **Deshabilitación automática de consola en producción**
157
- - ✅ **Rotación automática de archivos** cuando alcanzan el tamaño máximo
158
- - ✅ **Limpieza automática** de archivos antiguos
203
+ - ✅ **Rotación automática de archivos** cuando alcanzan el tamaño máximo (solo backend)
204
+ - ✅ **Limpieza automática** de archivos antiguos (solo backend)
205
+ - ✅ **Patrón Singleton**: Uso directo sin crear instancias
159
206
  - ✅ **TypeScript** con tipos completos
160
- - ✅ **Sin dependencias externas** (solo usa módulos nativos de Node.js)
207
+ - ✅ **Sin dependencias externas** (solo usa módulos nativos)
208
+ - ✅ **Compatible con Vite**: Soporte para variables `VITE_*`
161
209
 
162
210
  ## 📝 Ejemplos
163
211
 
164
- ### Ejemplo Completo
212
+ ### Ejemplo Completo (Backend)
165
213
 
166
214
  ```typescript
167
215
  import { info, warn, error, debug, configureLogger } from 'lognerd';
168
216
 
169
217
  // Configurar el logger (opcional, se configura automáticamente desde variables de entorno)
218
+ // LOG_ENVIRONMENT=B debe estar en .env
170
219
  configureLogger({
220
+ runtimeEnvironment: 'backend',
171
221
  level: process.env.NODE_ENV === 'production' ? 'WARN' : 'DEBUG',
172
222
  environment: process.env.NODE_ENV || 'development',
173
223
  filePath: './logs/app.log',
@@ -187,6 +237,26 @@ try {
187
237
  }
188
238
  ```
189
239
 
240
+ ### Ejemplo Completo (Frontend/Vite)
241
+
242
+ ```typescript
243
+ import { info, warn, error, debug } from 'lognerd';
244
+
245
+ // En .env: VITE_LOG_ENVIRONMENT=C
246
+ // No necesitas configurar nada, se detecta automáticamente
247
+
248
+ info('Aplicación iniciada');
249
+ debug('Estado de la aplicación', { users: 10, active: true });
250
+
251
+ try {
252
+ // Tu código aquí
253
+ info('Operación exitosa');
254
+ } catch (err) {
255
+ error('Error en operación', { error: err.message });
256
+ // Los logs solo se muestran en consola del navegador
257
+ }
258
+ ```
259
+
190
260
  ### Actualizar Configuración en Tiempo de Ejecución
191
261
 
192
262
  ```typescript
@@ -256,6 +326,28 @@ Los logs se guardan en el formato:
256
326
 
257
327
  Cuando un archivo de log alcanza el tamaño máximo configurado (`maxFileSize`), se renombra automáticamente con un timestamp y se crea un nuevo archivo. Los archivos antiguos se eliminan automáticamente cuando exceden el número máximo configurado (`maxFiles`).
258
328
 
329
+ **Nota:** La rotación de archivos solo funciona en **backend** (Node.js). En **cliente** (navegador), la escritura de archivos está deshabilitada.
330
+
331
+ ## 🐛 Solución de Problemas
332
+
333
+ ### Error: "process is not defined"
334
+ - **Causa**: El código se está ejecutando en el navegador sin configurar `LOG_ENVIRONMENT=C`
335
+ - **Solución**: Agrega `VITE_LOG_ENVIRONMENT=C` en tu archivo `.env` para Vite, o `LOG_ENVIRONMENT=C` para otros entornos
336
+
337
+ ### Error: "LOG_ENVIRONMENT está configurado para BACKEND pero se ejecuta en navegador"
338
+ - **Causa**: `LOG_ENVIRONMENT=B` está configurado pero el código corre en el navegador
339
+ - **Solución**: Cambia a `LOG_ENVIRONMENT=C` o `VITE_LOG_ENVIRONMENT=C` en tu `.env`
340
+
341
+ ### Los archivos de log no se crean
342
+ - **Causa**: Estás en cliente (navegador) o `LOG_ENVIRONMENT=C`
343
+ - **Solución**:
344
+ - Para backend: Configura `LOG_ENVIRONMENT=B` y asegúrate de tener permisos de escritura
345
+ - Para cliente: Es normal, los archivos no se pueden crear en el navegador
346
+
347
+ ### Variables de entorno no se leen en Vite
348
+ - **Causa**: Falta el prefijo `VITE_` en las variables
349
+ - **Solución**: Usa `VITE_LOG_ENVIRONMENT`, `VITE_LOGNERD_LEVEL`, etc.
350
+
259
351
  ## 📄 Licencia
260
352
 
261
353
  MIT
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { LoggerService } from './logger/logger.service';
2
2
  import { createLoggerConfig } from './logger/logger.config';
3
- import { LoggerConfig, LogLevel } from './logger/logger.types';
3
+ import { LoggerConfig, LogLevel, RuntimeEnvironment } from './logger/logger.types';
4
4
  /**
5
5
  * Crea una nueva instancia del logger con configuración personalizada
6
6
  */
@@ -21,6 +21,6 @@ export declare const logger: {
21
21
  updateConfig: (config: Partial<LoggerConfig>) => void;
22
22
  };
23
23
  export { LoggerService };
24
- export type { LoggerConfig, LogLevel };
24
+ export type { LoggerConfig, LogLevel, RuntimeEnvironment };
25
25
  export { createLoggerConfig };
26
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAgB/D;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,CAAC,YAAY,CAAC,kBAG1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,OAAO,CAAC,YAAY,CAAC,KAAG,IAK/D,CAAC;AAGF,eAAO,MAAM,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,KAAG,IAEtD,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,KAAG,IAEtD,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,KAAG,IAEvD,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,KAAG,IAEvD,CAAC;AAGF,eAAO,MAAM,MAAM;oBAjBW,MAAM,SAAS,OAAO,KAAG,IAAI;oBAI7B,MAAM,SAAS,OAAO,KAAG,IAAI;qBAI5B,MAAM,SAAS,OAAO,KAAG,IAAI;qBAI7B,MAAM,SAAS,OAAO,KAAG,IAAI;2BAUnC,OAAO,CAAC,YAAY,CAAC;CAC7C,CAAC;AAGF,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAgBnF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,CAAC,YAAY,CAAC,kBAG1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,OAAO,CAAC,YAAY,CAAC,KAAG,IAK/D,CAAC;AAGF,eAAO,MAAM,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,KAAG,IAEtD,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,KAAG,IAEtD,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,KAAG,IAEvD,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,KAAG,IAEvD,CAAC;AAGF,eAAO,MAAM,MAAM;oBAjBW,MAAM,SAAS,OAAO,KAAG,IAAI;oBAI7B,MAAM,SAAS,OAAO,KAAG,IAAI;qBAI5B,MAAM,SAAS,OAAO,KAAG,IAAI;qBAI7B,MAAM,SAAS,OAAO,KAAG,IAAI;2BAUnC,OAAO,CAAC,YAAY,CAAC;CAC7C,CAAC;AAGF,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.config.d.ts","sourceRoot":"","sources":["../../src/logger/logger.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,MAAM,gBAAgB,CAAC;AAuHxD,eAAO,MAAM,kBAAkB,GAC7B,eAAe,OAAO,CAAC,YAAY,CAAC,KACnC,YA2BF,CAAC"}
1
+ {"version":3,"file":"logger.config.d.ts","sourceRoot":"","sources":["../../src/logger/logger.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,MAAM,gBAAgB,CAAC;AA2PxD,eAAO,MAAM,kBAAkB,GAC7B,eAAe,OAAO,CAAC,YAAY,CAAC,KACnC,YAgEF,CAAC"}
@@ -1,41 +1,71 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.createLoggerConfig = void 0;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
4
+ // Detectar si estamos en Node.js o en el navegador
5
+ const isNode = typeof process !== 'undefined' && process.versions?.node !== undefined;
6
+ /**
7
+ * Detecta el entorno de ejecución (backend o client)
8
+ * Basado en LOG_ENVIRONMENT o detección automática
9
+ */
10
+ const detectRuntimeEnvironment = () => {
11
+ // Intentar leer LOG_ENVIRONMENT desde variables de entorno
12
+ let envValue;
13
+ try {
14
+ if (typeof process !== 'undefined' && process.env) {
15
+ envValue = process.env.LOG_ENVIRONMENT || process.env.VITE_LOG_ENVIRONMENT;
16
+ }
17
+ }
18
+ catch {
19
+ // process no disponible
20
+ }
21
+ // Si no está en process.env, intentar desde Vite
22
+ if (!envValue && !isNode) {
23
+ envValue = getViteEnv('LOG_ENVIRONMENT');
24
+ }
25
+ // Procesar el valor
26
+ if (envValue) {
27
+ const upperValue = envValue.trim().toUpperCase();
28
+ if (upperValue === 'B' || upperValue === 'BACKEND') {
29
+ return 'backend';
30
+ }
31
+ if (upperValue === 'C' || upperValue === 'CLIENT' || upperValue === 'CLIENTE') {
32
+ return 'client';
33
+ }
34
+ }
35
+ // Detección automática: si estamos en Node.js, asumimos backend
36
+ // Si no, asumimos client (navegador)
37
+ return isNode ? 'backend' : 'client';
38
+ };
39
+ // Función para obtener variables de entorno de Vite en tiempo de ejecución
40
+ // Vite inyecta import.meta.env en tiempo de compilación
41
+ const getViteEnv = (key) => {
42
+ try {
43
+ // Acceder a import.meta.env de forma segura
44
+ // En Vite, esto se reemplaza en tiempo de compilación
45
+ const meta = globalThis.__VITE_IMPORT_META__ ||
46
+ (typeof globalThis.import !== 'undefined' ?
47
+ globalThis.import.meta : null);
48
+ if (meta && meta.env && meta.env[key] !== undefined) {
49
+ return String(meta.env[key]);
50
+ }
51
+ }
52
+ catch {
53
+ // Ignorar errores - no estamos en Vite o no está disponible
54
+ }
55
+ return undefined;
56
+ };
57
+ // Importaciones condicionales solo para Node.js
58
+ let fs = null;
59
+ let path = null;
60
+ if (isNode) {
61
+ try {
62
+ fs = require('fs');
63
+ path = require('path');
64
+ }
65
+ catch {
66
+ // Ignorar si no están disponibles
67
+ }
68
+ }
39
69
  /**
40
70
  * Lee una variable de entorno y la convierte a boolean
41
71
  * Soporta tanto LOGNERD_* como VITE_LOGNERD_*
@@ -76,13 +106,44 @@ const getEnvLogLevel = (key, defaultValue) => {
76
106
  * Vite solo expone variables que comienzan con VITE_ al código del cliente
77
107
  */
78
108
  const getEnvValue = (key) => {
79
- // Primero intentar con prefijo VITE_ (para Vite)
80
- const viteKey = `VITE_${key}`;
81
- if (process.env[viteKey] !== undefined) {
82
- return process.env[viteKey];
109
+ // Verificar si process existe antes de usarlo (evita errores en navegador)
110
+ let processEnv;
111
+ try {
112
+ if (typeof process !== 'undefined' && process.env) {
113
+ processEnv = process.env;
114
+ }
115
+ }
116
+ catch {
117
+ // process no está disponible (estamos en navegador)
118
+ processEnv = undefined;
83
119
  }
84
- // Luego intentar sin prefijo (para Node.js y otros entornos)
85
- return process.env[key];
120
+ // Para Node.js
121
+ if (isNode && processEnv) {
122
+ // Primero intentar con prefijo VITE_ (por si acaso)
123
+ const viteKey = `VITE_${key}`;
124
+ if (processEnv[viteKey] !== undefined) {
125
+ return processEnv[viteKey];
126
+ }
127
+ // Luego intentar sin prefijo
128
+ if (processEnv[key] !== undefined) {
129
+ return processEnv[key];
130
+ }
131
+ }
132
+ // Para Vite (navegador) - intentar obtener variables de Vite
133
+ // Solo si no estamos en Node.js
134
+ if (!isNode) {
135
+ const viteKey = `VITE_${key}`;
136
+ const viteValue = getViteEnv(viteKey);
137
+ if (viteValue !== undefined) {
138
+ return String(viteValue);
139
+ }
140
+ // También intentar sin prefijo
141
+ const directValue = getViteEnv(key);
142
+ if (directValue !== undefined) {
143
+ return String(directValue);
144
+ }
145
+ }
146
+ return undefined;
86
147
  };
87
148
  /**
88
149
  * Lee la configuración desde variables de entorno
@@ -96,8 +157,22 @@ const getConfigFromEnv = () => {
96
157
  config.level = getEnvLogLevel('LOGNERD_LEVEL', 'INFO');
97
158
  }
98
159
  // Entorno (compatible con NODE_ENV, LOGNERD_ENVIRONMENT y VITE_LOGNERD_ENVIRONMENT)
160
+ let nodeEnv;
161
+ try {
162
+ if (!isNode) {
163
+ // En el navegador, intentar obtener de Vite
164
+ nodeEnv = getViteEnv('MODE') || getViteEnv('NODE_ENV');
165
+ }
166
+ else if (typeof process !== 'undefined' && process.env) {
167
+ nodeEnv = process.env.NODE_ENV;
168
+ }
169
+ }
170
+ catch {
171
+ // Ignorar errores si process no está disponible
172
+ nodeEnv = undefined;
173
+ }
99
174
  const environment = (getEnvValue('LOGNERD_ENVIRONMENT') ||
100
- process.env.NODE_ENV ||
175
+ nodeEnv ||
101
176
  'development');
102
177
  if (environment === 'development' || environment === 'production') {
103
178
  config.environment = environment;
@@ -129,36 +204,86 @@ const getConfigFromEnv = () => {
129
204
  }
130
205
  return config;
131
206
  };
207
+ // Obtener el directorio de trabajo (solo en Node.js)
208
+ const getDefaultFilePath = () => {
209
+ if (isNode && path) {
210
+ try {
211
+ if (typeof process !== 'undefined' && process.cwd) {
212
+ return path.join(process.cwd(), 'logs', 'app.log');
213
+ }
214
+ }
215
+ catch {
216
+ // Fallback si process.cwd() no está disponible
217
+ }
218
+ }
219
+ // En el navegador, no podemos escribir archivos, así que retornamos una ruta relativa
220
+ return './logs/app.log';
221
+ };
132
222
  const defaultConfig = {
133
223
  level: 'INFO',
134
224
  enableConsole: true,
135
225
  enableFile: true,
136
- filePath: path.join(process.cwd(), 'logs', 'app.log'),
226
+ filePath: getDefaultFilePath(),
137
227
  environment: 'development',
228
+ runtimeEnvironment: 'backend', // Se sobrescribirá con detectRuntimeEnvironment()
138
229
  maxFileSize: 10, // 10MB
139
230
  maxFiles: 5,
140
231
  };
141
232
  const createLoggerConfig = (customConfig) => {
233
+ // Detectar el entorno de ejecución primero
234
+ const runtimeEnv = detectRuntimeEnvironment();
142
235
  // Primero leer desde variables de entorno
143
236
  const envConfig = getConfigFromEnv();
144
237
  // Combinar: defaults -> env -> customConfig (customConfig tiene prioridad)
145
238
  const config = {
146
239
  ...defaultConfig,
240
+ runtimeEnvironment: runtimeEnv,
147
241
  ...envConfig,
148
242
  ...customConfig,
149
243
  };
244
+ // Validar y ajustar según el entorno de ejecución
245
+ if (config.runtimeEnvironment === 'client') {
246
+ // En cliente (navegador), deshabilitar escritura de archivos
247
+ if (config.enableFile) {
248
+ console.warn('[lognerd] ⚠️ LOG_ENVIRONMENT está configurado para CLIENT (C). ' +
249
+ 'La escritura de archivos está deshabilitada en el navegador. ' +
250
+ 'Configure LOG_ENVIRONMENT=B para backend si necesita escribir archivos.');
251
+ config.enableFile = false;
252
+ }
253
+ }
254
+ else if (config.runtimeEnvironment === 'backend') {
255
+ // En backend, asegurar que tenemos acceso a fs
256
+ if (config.enableFile && !isNode) {
257
+ console.error('[lognerd] ❌ ERROR: LOG_ENVIRONMENT está configurado para BACKEND (B) ' +
258
+ 'pero el código se está ejecutando en el navegador. ' +
259
+ 'Configure LOG_ENVIRONMENT=C para cliente o corrija su configuración.');
260
+ config.enableFile = false;
261
+ }
262
+ }
150
263
  // En producción, deshabilitar consola pero mantener archivo
151
264
  // (solo si no se especificó explícitamente enableConsole)
152
265
  if (config.environment === 'production' && customConfig?.enableConsole === undefined && envConfig.enableConsole === undefined) {
153
266
  config.enableConsole = false;
154
267
  config.enableFile = true;
155
268
  }
156
- // Asegurar que el directorio de logs existe
157
- if (config.enableFile && config.filePath) {
158
- const logDir = path.dirname(config.filePath);
159
- if (!fs.existsSync(logDir)) {
160
- fs.mkdirSync(logDir, { recursive: true });
269
+ // Asegurar que el directorio de logs existe (solo en Node.js)
270
+ if (config.enableFile && config.filePath && isNode && fs && path) {
271
+ try {
272
+ const logDir = path.dirname(config.filePath);
273
+ if (!fs.existsSync(logDir)) {
274
+ fs.mkdirSync(logDir, { recursive: true });
275
+ }
161
276
  }
277
+ catch (error) {
278
+ // En el navegador, no podemos crear directorios, así que deshabilitamos el archivo
279
+ if (!isNode) {
280
+ config.enableFile = false;
281
+ }
282
+ }
283
+ }
284
+ else if (!isNode && config.enableFile) {
285
+ // En el navegador, deshabilitar escritura en archivo por defecto
286
+ config.enableFile = false;
162
287
  }
163
288
  return config;
164
289
  };
@@ -1 +1 @@
1
- {"version":3,"file":"logger.config.js","sourceRoot":"","sources":["../../src/logger/logger.config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.config.js","sourceRoot":"","sources":["../../src/logger/logger.config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAGlE,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAkD;gBAEvD,MAAM,EAAE,YAAY;IAIhC,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,GAAG;IAqBX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;CAGrD;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAmBlE,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAkD;gBAEvD,MAAM,EAAE,YAAY;IAIhC,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,GAAG;IAkCX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAI5C,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;CAGrD;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,42 +1,21 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.LoggerService = void 0;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
4
  const logger_utils_1 = require("./logger.utils");
5
+ // Detectar si estamos en Node.js
6
+ const isNode = typeof process !== 'undefined' && process.versions?.node !== undefined;
7
+ // Importaciones condicionales solo para Node.js
8
+ let fs = null;
9
+ let path = null;
10
+ if (isNode) {
11
+ try {
12
+ fs = require('fs');
13
+ path = require('path');
14
+ }
15
+ catch {
16
+ // Ignorar si no están disponibles
17
+ }
18
+ }
40
19
  class LoggerService {
41
20
  constructor(config) {
42
21
  this.logLevels = ['DEBUG', 'INFO', 'WARN', 'ERROR'];
@@ -51,6 +30,19 @@ class LoggerService {
51
30
  if (!this.config.enableFile || !this.config.filePath) {
52
31
  return;
53
32
  }
33
+ // Validar que estamos en backend antes de escribir
34
+ if (this.config.runtimeEnvironment === 'client') {
35
+ // No intentar escribir en cliente
36
+ return;
37
+ }
38
+ // En el navegador, no podemos escribir archivos
39
+ if (!isNode || !fs) {
40
+ if (this.config.runtimeEnvironment === 'backend') {
41
+ console.error('[lognerd] ❌ ERROR: Intento de escribir archivo en backend pero fs no está disponible. ' +
42
+ 'Verifique que LOG_ENVIRONMENT=B esté configurado correctamente.');
43
+ }
44
+ return;
45
+ }
54
46
  try {
55
47
  const message = (0, logger_utils_1.formatFileMessage)(entry) + '\n';
56
48
  fs.appendFileSync(this.config.filePath, message, 'utf8');
@@ -63,13 +55,13 @@ class LoggerService {
63
55
  }
64
56
  }
65
57
  rotateLogFileIfNeeded() {
66
- if (!this.config.filePath || !this.config.maxFileSize) {
58
+ if (!this.config.filePath || !this.config.maxFileSize || !isNode || !fs || !path) {
67
59
  return;
68
60
  }
69
61
  try {
70
62
  const stats = fs.statSync(this.config.filePath);
71
63
  const fileSizeInMB = stats.size / (1024 * 1024);
72
- if (fileSizeInMB >= this.config.maxFileSize) {
64
+ if (fileSizeInMB >= this.config.maxFileSize && path && fs) {
73
65
  const logDir = path.dirname(this.config.filePath);
74
66
  const logFileName = path.basename(this.config.filePath, '.log');
75
67
  const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
@@ -86,22 +78,27 @@ class LoggerService {
86
78
  }
87
79
  }
88
80
  cleanOldLogFiles(logDir, logFileName) {
89
- if (!this.config.maxFiles) {
81
+ if (!this.config.maxFiles || !isNode || !fs || !path) {
90
82
  return;
91
83
  }
92
84
  try {
93
85
  const files = fs.readdirSync(logDir)
94
86
  .filter(file => file.startsWith(logFileName) && file.endsWith('.log'))
95
- .map(file => ({
96
- name: file,
97
- path: path.join(logDir, file),
98
- time: fs.statSync(path.join(logDir, file)).mtime.getTime(),
99
- }))
87
+ .map(file => {
88
+ const filePath = path && path.join(logDir, file);
89
+ return {
90
+ name: file,
91
+ path: filePath,
92
+ time: fs && filePath ? fs.statSync(filePath).mtime.getTime() : 0,
93
+ };
94
+ })
100
95
  .sort((a, b) => b.time - a.time);
101
96
  // Eliminar archivos que excedan el máximo
102
97
  if (files.length > this.config.maxFiles) {
103
98
  files.slice(this.config.maxFiles).forEach(file => {
104
- fs.unlinkSync(file.path);
99
+ if (fs && file.path) {
100
+ fs.unlinkSync(file.path);
101
+ }
105
102
  });
106
103
  }
107
104
  }
@@ -121,7 +118,21 @@ class LoggerService {
121
118
  };
122
119
  // Escribir en consola (si está habilitado)
123
120
  if (this.config.enableConsole) {
124
- console.log((0, logger_utils_1.formatConsoleMessage)(level, message, data));
121
+ // En web, usar console nativo con objetos expandibles
122
+ if (!isNode) {
123
+ const levelTag = `[${level}]`;
124
+ // Usar console.log con múltiples parámetros para mantener objetos expandibles
125
+ if (data !== undefined) {
126
+ console.log(`${levelTag} ${message}`, data);
127
+ }
128
+ else {
129
+ console.log(`${levelTag} ${message}`);
130
+ }
131
+ }
132
+ else {
133
+ // En Node.js, usar el formato con colores
134
+ console.log((0, logger_utils_1.formatConsoleMessage)(level, message, data));
135
+ }
125
136
  }
126
137
  // Escribir en archivo (siempre, incluso en producción)
127
138
  this.writeToFile(entry);
@@ -1 +1 @@
1
- {"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/logger/logger.service.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  export type LogLevel = 'ERROR' | 'WARN' | 'INFO' | 'DEBUG';
2
+ export type RuntimeEnvironment = 'backend' | 'client';
2
3
  export interface LoggerConfig {
3
4
  level: LogLevel;
4
5
  enableConsole: boolean;
5
6
  enableFile: boolean;
6
7
  filePath?: string;
7
8
  environment: 'development' | 'production';
9
+ runtimeEnvironment: RuntimeEnvironment;
8
10
  maxFileSize?: number;
9
11
  maxFiles?: number;
10
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logger.types.d.ts","sourceRoot":"","sources":["../../src/logger/logger.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,QAAQ,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,aAAa,GAAG,YAAY,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB"}
1
+ {"version":3,"file":"logger.types.d.ts","sourceRoot":"","sources":["../../src/logger/logger.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC3D,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,QAAQ,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,aAAa,GAAG,YAAY,CAAC;IAC1C,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB"}
package/package.json CHANGED
@@ -1,9 +1,17 @@
1
1
  {
2
2
  "name": "lognerd",
3
- "version": "1.0.1",
3
+ "version": "1.0.4",
4
4
  "description": "Sistema de logging con colores y escritura a archivo",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "prepublishOnly": "pnpm run build",
10
+ "dev": "tsc --watch",
11
+ "test": "ts-node test-logger.ts",
12
+ "test:env": "ts-node test-env.ts",
13
+ "test:singleton": "ts-node test-singleton.ts"
14
+ },
7
15
  "keywords": [
8
16
  "logger",
9
17
  "logging",
@@ -35,12 +43,5 @@
35
43
  "files": [
36
44
  "dist",
37
45
  "README.md"
38
- ],
39
- "scripts": {
40
- "build": "tsc",
41
- "dev": "tsc --watch",
42
- "test": "ts-node test-logger.ts",
43
- "test:env": "ts-node test-env.ts",
44
- "test:singleton": "ts-node test-singleton.ts"
45
- }
46
+ ]
46
47
  }