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 +87 -26
- package/dist/index.d.ts +20 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -1
- package/dist/index.js.map +1 -1
- package/dist/logger/logger.config.d.ts.map +1 -1
- package/dist/logger/logger.config.js +173 -48
- package/dist/logger/logger.config.js.map +1 -1
- package/dist/logger/logger.service.d.ts.map +1 -1
- package/dist/logger/logger.service.js +38 -43
- package/dist/logger/logger.service.js.map +1 -1
- package/dist/logger/logger.types.d.ts +2 -0
- package/dist/logger/logger.types.d.ts.map +1 -1
- package/package.json +14 -2
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 {
|
|
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
|
-
|
|
35
|
+
```typescript
|
|
36
|
+
import { logger } from 'lognerd';
|
|
23
37
|
|
|
24
38
|
logger.info('Aplicación iniciada');
|
|
25
|
-
logger.error('Error crítico', { code: 500
|
|
26
|
-
logger.warn('Advertencia
|
|
27
|
-
logger.debug('
|
|
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
|
|
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 {
|
|
166
|
+
import { info, warn, error, debug, configureLogger } from 'lognerd';
|
|
139
167
|
|
|
140
|
-
|
|
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
|
-
|
|
150
|
-
|
|
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
|
-
|
|
155
|
-
} catch (
|
|
156
|
-
|
|
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
|
-
|
|
192
|
+
import { configureLogger } from 'lognerd';
|
|
164
193
|
|
|
165
|
-
// Cambiar el nivel de log dinámicamente
|
|
166
|
-
|
|
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
|
|
223
|
+
Crea una nueva instancia del logger con configuración personalizada (útil para múltiples loggers).
|
|
174
224
|
|
|
175
|
-
### Métodos
|
|
225
|
+
### Métodos Disponibles
|
|
176
226
|
|
|
177
|
-
|
|
178
|
-
- `
|
|
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(
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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;
|
|
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
|
-
|
|
38
|
-
const
|
|
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
|
-
//
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
//
|
|
85
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
159
|
-
|
|
160
|
-
fs.
|
|
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":"
|
|
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":"
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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":"
|
|
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;
|
|
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.
|
|
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
|
}
|