@mks2508/better-logger 2.0.1 → 3.0.0
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/.claude/settings.local.json +6 -1
- package/CHANGELOG.json +93 -1
- package/CHANGELOG.md +127 -0
- package/CLAUDE.md +14 -1
- package/README.md +111 -20
- package/bun.lock +333 -0
- package/dist/Logger.d.ts +851 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/ScopedLogger.d.ts +57 -0
- package/dist/ScopedLogger.d.ts.map +1 -0
- package/dist/chunks/Logger-BCfx_yCK.js +2 -0
- package/dist/chunks/Logger-BCfx_yCK.js.map +1 -0
- package/dist/chunks/Logger-C126NTrD.js +4269 -0
- package/dist/chunks/Logger-C126NTrD.js.map +1 -0
- package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +33 -0
- package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +1 -0
- package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +2 -0
- package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +1 -0
- package/dist/chunks/environment-Ba5kShbx.js +4 -0
- package/dist/chunks/environment-Ba5kShbx.js.map +1 -0
- package/dist/chunks/environment-TI2ByCPT.js +1209 -0
- package/dist/chunks/environment-TI2ByCPT.js.map +1 -0
- package/dist/chunks/formatting-Blwy-f0W.js +2 -0
- package/dist/chunks/formatting-Blwy-f0W.js.map +1 -0
- package/dist/chunks/formatting-CuNUqGks.js +380 -0
- package/dist/chunks/formatting-CuNUqGks.js.map +1 -0
- package/dist/cli/CommandProcessor.d.ts +100 -0
- package/dist/cli/CommandProcessor.d.ts.map +1 -0
- package/dist/cli/commands/ConfigCommand.d.ts +14 -0
- package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
- package/dist/cli/commands/ExportCommand.d.ts +48 -0
- package/dist/cli/commands/ExportCommand.d.ts.map +1 -0
- package/dist/cli/commands/HistoryCommand.d.ts +47 -0
- package/dist/cli/commands/HistoryCommand.d.ts.map +1 -0
- package/dist/cli/commands/StatusCommand.d.ts +30 -0
- package/dist/cli/commands/StatusCommand.d.ts.map +1 -0
- package/dist/cli/commands/ThemeCommand.d.ts +30 -0
- package/dist/cli/commands/ThemeCommand.d.ts.map +1 -0
- package/dist/cli/help.d.ts +12 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/constants.d.ts +227 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/core.cjs +2 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.ts +127 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +291 -0
- package/dist/core.js.map +1 -0
- package/dist/example.d.ts +18 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/exports-module.d.ts +196 -0
- package/dist/exports-module.d.ts.map +1 -0
- package/dist/exports.cjs +2 -0
- package/dist/exports.cjs.map +1 -0
- package/dist/exports.js +238 -0
- package/dist/exports.js.map +1 -0
- package/dist/handlers/AnalyticsLogHandler.d.ts +8 -0
- package/dist/handlers/AnalyticsLogHandler.d.ts.map +1 -0
- package/dist/handlers/ExportLogHandler.d.ts +100 -0
- package/dist/handlers/ExportLogHandler.d.ts.map +1 -0
- package/dist/handlers/FileLogHandler.d.ts +33 -0
- package/dist/handlers/FileLogHandler.d.ts.map +1 -0
- package/dist/handlers/RemoteLogHandler.d.ts +11 -0
- package/dist/handlers/RemoteLogHandler.d.ts.map +1 -0
- package/dist/handlers/index.d.ts +8 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/hooks/HookManager.d.ts +21 -0
- package/dist/hooks/HookManager.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +144 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +478 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/serializers/SerializerRegistry.d.ts +16 -0
- package/dist/serializers/SerializerRegistry.d.ts.map +1 -0
- package/dist/serializers/index.d.ts +2 -0
- package/dist/serializers/index.d.ts.map +1 -0
- package/dist/styling/LogStyleBuilder.d.ts +146 -0
- package/dist/styling/LogStyleBuilder.d.ts.map +1 -0
- package/dist/styling/SemanticStyles.d.ts +178 -0
- package/dist/styling/SemanticStyles.d.ts.map +1 -0
- package/dist/styling/SmartPresets.d.ts +22 -0
- package/dist/styling/SmartPresets.d.ts.map +1 -0
- package/dist/styling/StyleBuilder.d.ts +140 -0
- package/dist/styling/StyleBuilder.d.ts.map +1 -0
- package/dist/styling/StyleCache.d.ts +42 -0
- package/dist/styling/StyleCache.d.ts.map +1 -0
- package/dist/styling/banners.d.ts +42 -0
- package/dist/styling/banners.d.ts.map +1 -0
- package/dist/styling/index.d.ts +10 -0
- package/dist/styling/index.d.ts.map +1 -0
- package/dist/styling/themes.d.ts +7 -0
- package/dist/styling/themes.d.ts.map +1 -0
- package/dist/styling-module.d.ts +178 -0
- package/dist/styling-module.d.ts.map +1 -0
- package/dist/styling.cjs +2 -0
- package/dist/styling.cjs.map +1 -0
- package/dist/styling.js +146 -0
- package/dist/styling.js.map +1 -0
- package/dist/terminal/terminal-renderer.d.ts +63 -0
- package/dist/terminal/terminal-renderer.d.ts.map +1 -0
- package/dist/transports/ConsoleTransport.d.ts +9 -0
- package/dist/transports/ConsoleTransport.d.ts.map +1 -0
- package/dist/transports/FileTransport.d.ts +15 -0
- package/dist/transports/FileTransport.d.ts.map +1 -0
- package/dist/transports/HttpTransport.d.ts +16 -0
- package/dist/transports/HttpTransport.d.ts.map +1 -0
- package/dist/transports/TransportManager.d.ts +14 -0
- package/dist/transports/TransportManager.d.ts.map +1 -0
- package/dist/transports/index.d.ts +5 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/types/core.d.ts +272 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/handlers.d.ts +85 -0
- package/dist/types/handlers.d.ts.map +1 -0
- package/dist/types/hooks.d.ts +36 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/serializers.d.ts +25 -0
- package/dist/types/serializers.d.ts.map +1 -0
- package/dist/types/transports.d.ts +47 -0
- package/dist/types/transports.d.ts.map +1 -0
- package/dist/utils/adapter.d.ts +48 -0
- package/dist/utils/adapter.d.ts.map +1 -0
- package/dist/utils/ansi-colors.d.ts +156 -0
- package/dist/utils/ansi-colors.d.ts.map +1 -0
- package/dist/utils/environment-detector.d.ts +35 -0
- package/dist/utils/environment-detector.d.ts.map +1 -0
- package/dist/utils/environment.d.ts +47 -0
- package/dist/utils/environment.d.ts.map +1 -0
- package/dist/utils/formatting.d.ts +58 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/opentui-detection.d.ts +34 -0
- package/dist/utils/opentui-detection.d.ts.map +1 -0
- package/dist/utils/output.d.ts +46 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/stackTrace.d.ts +6 -0
- package/dist/utils/stackTrace.d.ts.map +1 -0
- package/dist/utils/timestamps.d.ts +20 -0
- package/dist/utils/timestamps.d.ts.map +1 -0
- package/dist/vite.svg +1 -0
- package/docs/API.md +227 -0
- package/package.json +1 -1
- package/packages/core/package.json +1 -1
- package/src/Logger.ts +391 -102
- package/src/ScopedLogger.ts +78 -318
- package/src/hooks/HookManager.ts +177 -0
- package/src/hooks/index.ts +1 -0
- package/src/index.ts +77 -2
- package/src/serializers/SerializerRegistry.ts +173 -0
- package/src/serializers/index.ts +1 -0
- package/src/styling/StyleCache.ts +131 -0
- package/src/transports/ConsoleTransport.ts +28 -0
- package/src/transports/FileTransport.ts +53 -0
- package/src/transports/HttpTransport.ts +56 -0
- package/src/transports/TransportManager.ts +130 -0
- package/src/transports/index.ts +4 -0
- package/src/types/core.ts +46 -0
- package/src/types/hooks.ts +45 -0
- package/src/types/index.ts +39 -1
- package/src/types/serializers.ts +30 -0
- package/src/types/transports.ts +52 -0
package/docs/API.md
CHANGED
|
@@ -11,6 +11,10 @@ Complete API documentation for Better Logger with detailed method signatures, pa
|
|
|
11
11
|
## Table of Contents
|
|
12
12
|
|
|
13
13
|
- [Core Logger](#core-logger)
|
|
14
|
+
- [Enterprise Features (v3.0.0)](#enterprise-features-v300)
|
|
15
|
+
- [Custom Serializers](#custom-serializers)
|
|
16
|
+
- [Hooks & Middleware](#hooks--middleware)
|
|
17
|
+
- [Transports](#transports)
|
|
14
18
|
- [Style Builder](#style-builder)
|
|
15
19
|
- [CLI Interface](#cli-interface)
|
|
16
20
|
- [Export & Remote](#export--remote)
|
|
@@ -191,6 +195,229 @@ logger.addHandler({
|
|
|
191
195
|
|
|
192
196
|
---
|
|
193
197
|
|
|
198
|
+
## 🔄 Enterprise Features (v3.0.0)
|
|
199
|
+
|
|
200
|
+
### Custom Serializers
|
|
201
|
+
|
|
202
|
+
Transform objects before logging with type-based serializers.
|
|
203
|
+
|
|
204
|
+
#### `logger.addSerializer(type, serializer, priority?)`
|
|
205
|
+
Register a serializer for a specific type.
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
// Serialize Error objects
|
|
209
|
+
logger.addSerializer(Error, (err) => ({
|
|
210
|
+
name: err.name,
|
|
211
|
+
message: err.message,
|
|
212
|
+
stack: err.stack?.split('\n').slice(0, 5)
|
|
213
|
+
}));
|
|
214
|
+
|
|
215
|
+
// Serialize User objects (omit sensitive data)
|
|
216
|
+
logger.addSerializer(User, (user) => ({
|
|
217
|
+
id: user.id,
|
|
218
|
+
email: user.email
|
|
219
|
+
// password automatically omitted
|
|
220
|
+
}), 100); // higher priority
|
|
221
|
+
|
|
222
|
+
// Now objects are serialized automatically
|
|
223
|
+
logger.error('Failed:', new Error('Connection timeout'));
|
|
224
|
+
logger.info('User:', currentUser);
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
#### `logger.removeSerializer(type)`
|
|
228
|
+
Remove a registered serializer.
|
|
229
|
+
|
|
230
|
+
```typescript
|
|
231
|
+
logger.removeSerializer(Error);
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
#### `logger.getSerializerRegistry()`
|
|
235
|
+
Access the SerializerRegistry for advanced operations.
|
|
236
|
+
|
|
237
|
+
```typescript
|
|
238
|
+
const registry = logger.getSerializerRegistry();
|
|
239
|
+
const serialized = registry.serialize(complexObject);
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Hooks & Middleware
|
|
243
|
+
|
|
244
|
+
Intercept and modify log entries with hooks and middleware.
|
|
245
|
+
|
|
246
|
+
#### `logger.on(event, callback, priority?)`
|
|
247
|
+
Register a hook for an event. Returns unsubscribe function.
|
|
248
|
+
|
|
249
|
+
```typescript
|
|
250
|
+
// Add correlation ID to all logs
|
|
251
|
+
const unsubscribe = logger.on('beforeLog', (entry) => {
|
|
252
|
+
entry.correlationId = getCorrelationId();
|
|
253
|
+
return entry; // Return modified entry
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
// Track metrics after logging
|
|
257
|
+
logger.on('afterLog', (entry) => {
|
|
258
|
+
metrics.increment(`logs.${entry.level}`);
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
// Handle errors
|
|
262
|
+
logger.on('onError', (entry) => {
|
|
263
|
+
alertSystem.notify(entry.message);
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
// Unsubscribe when done
|
|
267
|
+
unsubscribe();
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
#### `logger.once(event, callback, priority?)`
|
|
271
|
+
Register a hook that fires only once.
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
logger.once('beforeLog', (entry) => {
|
|
275
|
+
console.log('First log entry:', entry.message);
|
|
276
|
+
});
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
#### `logger.off(event, callback)`
|
|
280
|
+
Remove a registered hook.
|
|
281
|
+
|
|
282
|
+
```typescript
|
|
283
|
+
const myHook = (entry) => { /* ... */ };
|
|
284
|
+
logger.on('beforeLog', myHook);
|
|
285
|
+
// Later...
|
|
286
|
+
logger.off('beforeLog', myHook);
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
#### `logger.use(middleware, priority?)`
|
|
290
|
+
Add middleware to the processing pipeline.
|
|
291
|
+
|
|
292
|
+
```typescript
|
|
293
|
+
// Add request context
|
|
294
|
+
logger.use((entry, next) => {
|
|
295
|
+
entry.requestId = asyncLocalStorage.getStore()?.requestId;
|
|
296
|
+
next(); // Continue to next middleware
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
// Redact sensitive data
|
|
300
|
+
logger.use((entry, next) => {
|
|
301
|
+
entry.message = entry.message.replace(/password=\S+/g, 'password=***');
|
|
302
|
+
next();
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
// Middleware with priority (higher = runs first)
|
|
306
|
+
logger.use((entry, next) => {
|
|
307
|
+
entry.timestamp = new Date().toISOString();
|
|
308
|
+
next();
|
|
309
|
+
}, 100);
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
#### Hook Events
|
|
313
|
+
|
|
314
|
+
| Event | Description | Can Modify Entry |
|
|
315
|
+
|-------|-------------|------------------|
|
|
316
|
+
| `beforeLog` | Before log is processed | Yes |
|
|
317
|
+
| `afterLog` | After log is output | No |
|
|
318
|
+
| `onError` | When an error occurs | No |
|
|
319
|
+
|
|
320
|
+
### Transports
|
|
321
|
+
|
|
322
|
+
Send logs to multiple destinations with the transport system.
|
|
323
|
+
|
|
324
|
+
#### `logger.addTransport(target)`
|
|
325
|
+
Add a transport destination. Returns transport ID.
|
|
326
|
+
|
|
327
|
+
```typescript
|
|
328
|
+
// Built-in file transport (Node.js)
|
|
329
|
+
const fileId = logger.addTransport({
|
|
330
|
+
target: 'file',
|
|
331
|
+
options: { destination: '/var/log/app.log' }
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
// Built-in HTTP transport with batching
|
|
335
|
+
const httpId = logger.addTransport({
|
|
336
|
+
target: 'http',
|
|
337
|
+
options: {
|
|
338
|
+
url: 'https://logs.example.com/ingest',
|
|
339
|
+
headers: { 'Authorization': 'Bearer token' },
|
|
340
|
+
batchSize: 100, // Send in batches of 100
|
|
341
|
+
flushInterval: 5000 // Or every 5 seconds
|
|
342
|
+
},
|
|
343
|
+
level: 'warn' // Only warn and above
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
// Built-in console transport
|
|
347
|
+
logger.addTransport({
|
|
348
|
+
target: 'console'
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
// Custom transport
|
|
352
|
+
logger.addTransport({
|
|
353
|
+
target: {
|
|
354
|
+
name: 'elasticsearch',
|
|
355
|
+
write: async (record) => {
|
|
356
|
+
await esClient.index({
|
|
357
|
+
index: 'logs',
|
|
358
|
+
body: record
|
|
359
|
+
});
|
|
360
|
+
},
|
|
361
|
+
flush: async () => {
|
|
362
|
+
await esClient.indices.refresh({ index: 'logs' });
|
|
363
|
+
},
|
|
364
|
+
close: async () => {
|
|
365
|
+
await esClient.close();
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
#### `logger.removeTransport(id)`
|
|
372
|
+
Remove a transport by ID.
|
|
373
|
+
|
|
374
|
+
```typescript
|
|
375
|
+
logger.removeTransport(fileId);
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
#### `logger.flushTransports()`
|
|
379
|
+
Force flush all transport buffers.
|
|
380
|
+
|
|
381
|
+
```typescript
|
|
382
|
+
await logger.flushTransports();
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
#### `logger.closeTransports()`
|
|
386
|
+
Close all transports (flush + cleanup).
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
// Before application shutdown
|
|
390
|
+
await logger.closeTransports();
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
#### Transport Record Structure
|
|
394
|
+
|
|
395
|
+
```typescript
|
|
396
|
+
interface TransportRecord {
|
|
397
|
+
level: LogLevel;
|
|
398
|
+
levelValue: number; // 0-4
|
|
399
|
+
time: number; // Unix timestamp
|
|
400
|
+
msg: string;
|
|
401
|
+
prefix?: string;
|
|
402
|
+
location?: {
|
|
403
|
+
file: string;
|
|
404
|
+
line: number;
|
|
405
|
+
column: number;
|
|
406
|
+
function?: string;
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
#### Built-in Transports
|
|
412
|
+
|
|
413
|
+
| Transport | Description | Options |
|
|
414
|
+
|-----------|-------------|---------|
|
|
415
|
+
| `console` | Console output | - |
|
|
416
|
+
| `file` | File logging (Node.js) | `destination`, `batchSize`, `flushInterval` |
|
|
417
|
+
| `http` | HTTP/HTTPS endpoint | `url`, `headers`, `batchSize`, `flushInterval` |
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
194
421
|
## 🎨 Style Builder
|
|
195
422
|
|
|
196
423
|
Create custom console styles programmatically.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mks2508/better-logger",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Logger avanzado para consola con estilos CSS, temas adaptativos, badges automáticos, SVG, animaciones, CLI integrado y soporte dual browser/terminal con colores ANSI",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mks2508/better-logger-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0-alpha.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Universal core logging functionality for Better Logger - Works in both Node.js and browser environments",
|
|
6
6
|
"main": "dist/index.cjs",
|