lognerd 1.0.0 → 1.0.3

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
@@ -16,15 +16,44 @@ npm install lognerd
16
16
 
17
17
  ## 📖 Uso Básico
18
18
 
19
+ ### Uso Directo (Recomendado - Patrón Singleton)
20
+
21
+ Puedes usar el logger directamente sin necesidad de crear una instancia:
22
+
19
23
  ```typescript
20
- import { createLogger } from 'lognerd';
24
+ import { info, warn, error, debug } from 'lognerd';
25
+
26
+ // Uso directo - el logger se configura automáticamente desde variables de entorno
27
+ info('Aplicación iniciada');
28
+ error('Error crítico', { code: 500, message: 'Error de servidor' });
29
+ warn('Advertencia: conexión lenta');
30
+ debug('Información de debug', { userId: 123 });
31
+ ```
32
+
33
+ O usando el objeto logger:
21
34
 
22
- const logger = createLogger();
35
+ ```typescript
36
+ import { logger } from 'lognerd';
23
37
 
24
38
  logger.info('Aplicación iniciada');
25
- logger.error('Error crítico', { code: 500, message: 'Error de servidor' });
26
- logger.warn('Advertencia: conexión lenta');
27
- logger.debug('Información de debug', { userId: 123 });
39
+ logger.error('Error crítico', { code: 500 });
40
+ logger.warn('Advertencia');
41
+ logger.debug('Debug info');
42
+ ```
43
+
44
+ ### Uso con Instancia Personalizada
45
+
46
+ Si necesitas múltiples instancias con configuraciones diferentes:
47
+
48
+ ```typescript
49
+ import { createLogger } from 'lognerd';
50
+
51
+ const customLogger = createLogger({
52
+ level: 'DEBUG',
53
+ filePath: './logs/custom.log',
54
+ });
55
+
56
+ customLogger.info('Mensaje con logger personalizado');
28
57
  ```
29
58
 
30
59
  ## ⚙️ Configuración
@@ -48,9 +77,10 @@ Puedes configurar lognerd completamente mediante variables de entorno. Esto es i
48
77
  | `LOGNERD_MAX_FILE_SIZE` | `VITE_LOGNERD_MAX_FILE_SIZE` | Tamaño máximo del archivo en MB | Número entero | `10` |
49
78
  | `LOGNERD_MAX_FILES` | `VITE_LOGNERD_MAX_FILES` | Número máximo de archivos rotados | Número entero | `5` |
50
79
 
51
- **Ejemplo para Node.js/Next.js:**
80
+ **Ejemplo para Node.js/Next.js (Backend):**
52
81
  ```bash
53
82
  # .env
83
+ LOG_ENVIRONMENT=B
54
84
  LOGNERD_LEVEL=INFO
55
85
  LOGNERD_ENVIRONMENT=development
56
86
  LOGNERD_ENABLE_CONSOLE=true
@@ -60,16 +90,14 @@ LOGNERD_MAX_FILE_SIZE=10
60
90
  LOGNERD_MAX_FILES=5
61
91
  ```
62
92
 
63
- **Ejemplo para Vite:**
93
+ **Ejemplo para Vite (Cliente/Navegador):**
64
94
  ```bash
65
95
  # .env
96
+ VITE_LOG_ENVIRONMENT=C
66
97
  VITE_LOGNERD_LEVEL=INFO
67
98
  VITE_LOGNERD_ENVIRONMENT=development
68
99
  VITE_LOGNERD_ENABLE_CONSOLE=true
69
- VITE_LOGNERD_ENABLE_FILE=true
70
- VITE_LOGNERD_FILE_PATH=./logs/app.log
71
- VITE_LOGNERD_MAX_FILE_SIZE=10
72
- VITE_LOGNERD_MAX_FILES=5
100
+ # VITE_LOGNERD_ENABLE_FILE se ignora en cliente (siempre false)
73
101
  ```
74
102
 
75
103
  **Ejemplo para producción (Vite):**
@@ -135,9 +163,10 @@ NODE_ENV=production LOGNERD_LEVEL=WARN
135
163
  ### Ejemplo Completo
136
164
 
137
165
  ```typescript
138
- import { createLogger } from 'lognerd';
166
+ import { info, warn, error, debug, configureLogger } from 'lognerd';
139
167
 
140
- const logger = createLogger({
168
+ // Configurar el logger (opcional, se configura automáticamente desde variables de entorno)
169
+ configureLogger({
141
170
  level: process.env.NODE_ENV === 'production' ? 'WARN' : 'DEBUG',
142
171
  environment: process.env.NODE_ENV || 'development',
143
172
  filePath: './logs/app.log',
@@ -146,39 +175,71 @@ const logger = createLogger({
146
175
  // En desarrollo: se muestra en consola con colores y se guarda en archivo
147
176
  // En producción: solo se guarda en archivo
148
177
 
149
- logger.info('Servidor iniciado en puerto 3000');
150
- logger.debug('Variables de entorno cargadas', { env: process.env.NODE_ENV });
178
+ info('Servidor iniciado en puerto 3000');
179
+ debug('Variables de entorno cargadas', { env: process.env.NODE_ENV });
151
180
 
152
181
  try {
153
182
  // Tu código aquí
154
- logger.info('Operación exitosa');
155
- } catch (error) {
156
- logger.error('Error en operación', { error: error.message, stack: error.stack });
183
+ info('Operación exitosa');
184
+ } catch (err) {
185
+ error('Error en operación', { error: err.message, stack: err.stack });
157
186
  }
158
187
  ```
159
188
 
160
189
  ### Actualizar Configuración en Tiempo de Ejecución
161
190
 
162
191
  ```typescript
163
- const logger = createLogger();
192
+ import { configureLogger } from 'lognerd';
164
193
 
165
- // Cambiar el nivel de log dinámicamente
166
- logger.updateConfig({ level: 'ERROR' });
194
+ // Cambiar el nivel de log dinámicamente del singleton
195
+ configureLogger({ level: 'ERROR' });
167
196
  ```
168
197
 
169
198
  ## 🔧 API
170
199
 
200
+ ### Funciones Directas (Singleton)
201
+
202
+ El paquete exporta funciones directas que usan una instancia singleton del logger:
203
+
204
+ ```typescript
205
+ import { info, warn, error, debug, logger, configureLogger } from 'lognerd';
206
+
207
+ // Funciones directas
208
+ info('Mensaje informativo');
209
+ warn('Advertencia');
210
+ error('Error', { code: 500 });
211
+ debug('Debug', { data: 'test' });
212
+
213
+ // Objeto logger (mismo singleton)
214
+ logger.info('Mensaje');
215
+ logger.warn('Advertencia');
216
+
217
+ // Configurar el singleton
218
+ configureLogger({ level: 'WARN', filePath: './logs/custom.log' });
219
+ ```
220
+
171
221
  ### `createLogger(config?: Partial<LoggerConfig>): LoggerService`
172
222
 
173
- Crea una instancia del logger con la configuración proporcionada.
223
+ Crea una nueva instancia del logger con configuración personalizada (útil para múltiples loggers).
174
224
 
175
- ### Métodos del Logger
225
+ ### Métodos Disponibles
176
226
 
177
- - `logger.error(message: string, data?: unknown): void` - Log de error
178
- - `logger.warn(message: string, data?: unknown): void` - Log de advertencia
227
+ **Funciones directas (singleton):**
228
+ - `info(message: string, data?: unknown): void` - Log informativo
229
+ - `warn(message: string, data?: unknown): void` - Log de advertencia
230
+ - `error(message: string, data?: unknown): void` - Log de error
231
+ - `debug(message: string, data?: unknown): void` - Log de debug
232
+ - `configureLogger(config: Partial<LoggerConfig>): void` - Actualizar configuración del singleton
233
+
234
+ **Objeto logger (singleton):**
179
235
  - `logger.info(message: string, data?: unknown): void` - Log informativo
236
+ - `logger.warn(message: string, data?: unknown): void` - Log de advertencia
237
+ - `logger.error(message: string, data?: unknown): void` - Log de error
180
238
  - `logger.debug(message: string, data?: unknown): void` - Log de debug
181
- - `logger.updateConfig(newConfig: Partial<LoggerConfig>): void` - Actualizar configuración
239
+ - `logger.updateConfig(config: Partial<LoggerConfig>): void` - Actualizar configuración
240
+
241
+ **Instancias personalizadas:**
242
+ - `logger.updateConfig(newConfig: Partial<LoggerConfig>): void` - Actualizar configuración (en instancias creadas con `createLogger`)
182
243
 
183
244
  ## 📦 Estructura de Archivos de Log
184
245
 
package/dist/index.d.ts CHANGED
@@ -1,8 +1,26 @@
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
+ /**
5
+ * Crea una nueva instancia del logger con configuración personalizada
6
+ */
4
7
  export declare const createLogger: (config?: Partial<LoggerConfig>) => LoggerService;
8
+ /**
9
+ * Actualiza la configuración del logger singleton
10
+ */
11
+ export declare const configureLogger: (config: Partial<LoggerConfig>) => void;
12
+ export declare const info: (message: string, data?: unknown) => void;
13
+ export declare const warn: (message: string, data?: unknown) => void;
14
+ export declare const error: (message: string, data?: unknown) => void;
15
+ export declare const debug: (message: string, data?: unknown) => void;
16
+ export declare const logger: {
17
+ info: (message: string, data?: unknown) => void;
18
+ warn: (message: string, data?: unknown) => void;
19
+ error: (message: string, data?: unknown) => void;
20
+ debug: (message: string, data?: unknown) => void;
21
+ updateConfig: (config: Partial<LoggerConfig>) => void;
22
+ };
5
23
  export { LoggerService };
6
- export type { LoggerConfig, LogLevel };
24
+ export type { LoggerConfig, LogLevel, RuntimeEnvironment };
7
25
  export { createLoggerConfig };
8
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;AAE/D,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,CAAC,YAAY,CAAC,kBAG1D,CAAC;AAEF,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"}
package/dist/index.js CHANGED
@@ -1,13 +1,63 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createLoggerConfig = exports.LoggerService = exports.createLogger = void 0;
3
+ exports.createLoggerConfig = exports.LoggerService = exports.logger = exports.debug = exports.error = exports.warn = exports.info = exports.configureLogger = exports.createLogger = void 0;
4
4
  const logger_service_1 = require("./logger/logger.service");
5
5
  Object.defineProperty(exports, "LoggerService", { enumerable: true, get: function () { return logger_service_1.LoggerService; } });
6
6
  const logger_config_1 = require("./logger/logger.config");
7
7
  Object.defineProperty(exports, "createLoggerConfig", { enumerable: true, get: function () { return logger_config_1.createLoggerConfig; } });
8
+ // Instancia singleton del logger
9
+ let loggerInstance = null;
10
+ /**
11
+ * Crea o retorna la instancia singleton del logger
12
+ */
13
+ const getLogger = () => {
14
+ if (!loggerInstance) {
15
+ const config = (0, logger_config_1.createLoggerConfig)();
16
+ loggerInstance = new logger_service_1.LoggerService(config);
17
+ }
18
+ return loggerInstance;
19
+ };
20
+ /**
21
+ * Crea una nueva instancia del logger con configuración personalizada
22
+ */
8
23
  const createLogger = (config) => {
9
24
  const loggerConfig = (0, logger_config_1.createLoggerConfig)(config);
10
25
  return new logger_service_1.LoggerService(loggerConfig);
11
26
  };
12
27
  exports.createLogger = createLogger;
28
+ /**
29
+ * Actualiza la configuración del logger singleton
30
+ */
31
+ const configureLogger = (config) => {
32
+ if (!loggerInstance) {
33
+ getLogger();
34
+ }
35
+ loggerInstance.updateConfig(config);
36
+ };
37
+ exports.configureLogger = configureLogger;
38
+ // Exportar métodos directos del logger singleton
39
+ const info = (message, data) => {
40
+ getLogger().info(message, data);
41
+ };
42
+ exports.info = info;
43
+ const warn = (message, data) => {
44
+ getLogger().warn(message, data);
45
+ };
46
+ exports.warn = warn;
47
+ const error = (message, data) => {
48
+ getLogger().error(message, data);
49
+ };
50
+ exports.error = error;
51
+ const debug = (message, data) => {
52
+ getLogger().debug(message, data);
53
+ };
54
+ exports.debug = debug;
55
+ // Exportar también el logger singleton completo
56
+ exports.logger = {
57
+ info: exports.info,
58
+ warn: exports.warn,
59
+ error: exports.error,
60
+ debug: exports.debug,
61
+ updateConfig: (config) => (0, exports.configureLogger)(config),
62
+ };
13
63
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4DAAwD;AAS/C,8FATA,8BAAa,OASA;AARtB,0DAA4D;AAUnD,mGAVA,kCAAkB,OAUA;AAPpB,MAAM,YAAY,GAAG,CAAC,MAA8B,EAAE,EAAE;IAC7D,MAAM,YAAY,GAAG,IAAA,kCAAkB,EAAC,MAAM,CAAC,CAAC;IAChD,OAAO,IAAI,8BAAa,CAAC,YAAY,CAAC,CAAC;AACzC,CAAC,CAAC;AAHW,QAAA,YAAY,gBAGvB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4DAAwD;AA+D/C,8FA/DA,8BAAa,OA+DA;AA9DtB,0DAA4D;AAgEnD,mGAhEA,kCAAkB,OAgEA;AA7D3B,iCAAiC;AACjC,IAAI,cAAc,GAAyB,IAAI,CAAC;AAEhD;;GAEG;AACH,MAAM,SAAS,GAAG,GAAkB,EAAE;IACpC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,IAAA,kCAAkB,GAAE,CAAC;QACpC,cAAc,GAAG,IAAI,8BAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF;;GAEG;AACI,MAAM,YAAY,GAAG,CAAC,MAA8B,EAAE,EAAE;IAC7D,MAAM,YAAY,GAAG,IAAA,kCAAkB,EAAC,MAAM,CAAC,CAAC;IAChD,OAAO,IAAI,8BAAa,CAAC,YAAY,CAAC,CAAC;AACzC,CAAC,CAAC;AAHW,QAAA,YAAY,gBAGvB;AAEF;;GAEG;AACI,MAAM,eAAe,GAAG,CAAC,MAA6B,EAAQ,EAAE;IACrE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,SAAS,EAAE,CAAC;IACd,CAAC;IACD,cAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AALW,QAAA,eAAe,mBAK1B;AAEF,iDAAiD;AAC1C,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,IAAc,EAAQ,EAAE;IAC5D,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAFW,QAAA,IAAI,QAEf;AAEK,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,IAAc,EAAQ,EAAE;IAC5D,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAFW,QAAA,IAAI,QAEf;AAEK,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,IAAc,EAAQ,EAAE;IAC7D,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC;AAFW,QAAA,KAAK,SAEhB;AAEK,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,IAAc,EAAQ,EAAE;IAC7D,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC;AAFW,QAAA,KAAK,SAEhB;AAEF,gDAAgD;AACnC,QAAA,MAAM,GAAG;IACpB,IAAI,EAAJ,YAAI;IACJ,IAAI,EAAJ,YAAI;IACJ,KAAK,EAAL,aAAK;IACL,KAAK,EAAL,aAAK;IACL,YAAY,EAAE,CAAC,MAA6B,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,MAAM,CAAC;CACzE,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;IA6BxB,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,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,17 +78,20 @@ 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.join(logDir, file);
89
+ return {
90
+ name: file,
91
+ path: filePath,
92
+ time: fs.statSync(filePath).mtime.getTime(),
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) {
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "lognerd",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
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",
@@ -13,6 +13,14 @@
13
13
  ],
14
14
  "author": "solivoo",
15
15
  "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/solivoo/lognerd.git"
19
+ },
20
+ "homepage": "https://github.com/solivoo/lognerd#readme",
21
+ "bugs": {
22
+ "url": "https://github.com/solivoo/lognerd/issues"
23
+ },
16
24
  "devDependencies": {
17
25
  "@types/node": "^20.0.0",
18
26
  "ts-node": "^10.9.2",
@@ -21,6 +29,9 @@
21
29
  "peerDependencies": {
22
30
  "typescript": "^5.0.0"
23
31
  },
32
+ "engines": {
33
+ "node": ">=16.0.0"
34
+ },
24
35
  "files": [
25
36
  "dist",
26
37
  "README.md"
@@ -29,6 +40,7 @@
29
40
  "build": "tsc",
30
41
  "dev": "tsc --watch",
31
42
  "test": "ts-node test-logger.ts",
32
- "test:env": "ts-node test-env.ts"
43
+ "test:env": "ts-node test-env.ts",
44
+ "test:singleton": "ts-node test-singleton.ts"
33
45
  }
34
46
  }