logixia 1.10.0 → 1.10.2

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.
Files changed (37) hide show
  1. package/README.md +58 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/index.d.mts +1 -1
  4. package/dist/index.d.mts.map +1 -1
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -2
  8. package/dist/index.mjs +2 -2
  9. package/dist/{logitron-logger.module-NLCrDkXA.d.mts → logitron-logger.module-B8NklSC4.d.mts} +6 -3
  10. package/dist/logitron-logger.module-B8NklSC4.d.mts.map +1 -0
  11. package/dist/{logitron-logger.module-209uTmVY.d.ts → logitron-logger.module-BLT1y5Iq.d.ts} +6 -3
  12. package/dist/logitron-logger.module-BLT1y5Iq.d.ts.map +1 -0
  13. package/dist/{logitron-logger.module-BFNsUfx7.mjs → logitron-logger.module-Bt_Jei1V.mjs} +73 -21
  14. package/dist/logitron-logger.module-Bt_Jei1V.mjs.map +1 -0
  15. package/dist/{logitron-logger.module-DC0qwI3N.js → logitron-logger.module-bJ1hGhaL.js} +73 -21
  16. package/dist/logitron-logger.module-bJ1hGhaL.js.map +1 -0
  17. package/dist/nest.d.mts +1 -1
  18. package/dist/nest.d.ts +1 -1
  19. package/dist/nest.js +2 -2
  20. package/dist/nest.mjs +2 -2
  21. package/dist/{transport.manager-DsvWfJ_b.mjs → transport.manager-CaL4XuLD.mjs} +36 -17
  22. package/dist/transport.manager-CaL4XuLD.mjs.map +1 -0
  23. package/dist/{transport.manager-CgeSNG_8.js → transport.manager-zgEZCJhR.js} +36 -17
  24. package/dist/transport.manager-zgEZCJhR.js.map +1 -0
  25. package/dist/transports.d.mts +14 -1
  26. package/dist/transports.d.mts.map +1 -1
  27. package/dist/transports.d.ts +14 -1
  28. package/dist/transports.d.ts.map +1 -1
  29. package/dist/transports.js +1 -1
  30. package/dist/transports.mjs +1 -1
  31. package/package.json +1 -1
  32. package/dist/logitron-logger.module-209uTmVY.d.ts.map +0 -1
  33. package/dist/logitron-logger.module-BFNsUfx7.mjs.map +0 -1
  34. package/dist/logitron-logger.module-DC0qwI3N.js.map +0 -1
  35. package/dist/logitron-logger.module-NLCrDkXA.d.mts.map +0 -1
  36. package/dist/transport.manager-CgeSNG_8.js.map +0 -1
  37. package/dist/transport.manager-DsvWfJ_b.mjs.map +0 -1
package/README.md CHANGED
@@ -105,6 +105,7 @@ await logger.info('Server started', { port: 3000 });
105
105
  - [Timer API](#timer-api)
106
106
  - [Field management](#field-management)
107
107
  - [Transport level control](#transport-level-control)
108
+ - [Transport filter predicate](#transport-filter-predicate)
108
109
  - [Log search](#log-search)
109
110
  - [OpenTelemetry](#opentelemetry)
110
111
  - [Graceful shutdown](#graceful-shutdown)
@@ -1537,6 +1538,55 @@ const ids = logger.getAvailableTransports(); // ['console', 'file-0', 'database-
1537
1538
  logger.clearTransportLevelPreferences();
1538
1539
  ```
1539
1540
 
1541
+ ## Transport filter predicate
1542
+
1543
+ Every transport (database, file, console, analytics, custom) accepts an optional `filter` function. It runs after the level check and lets you express any condition over the full log entry — by context, message content, payload fields, or anything else. Return `false` to skip the entry for that transport only; other transports are unaffected.
1544
+
1545
+ ```typescript
1546
+ const logger = createLogger({
1547
+ appName: 'api',
1548
+ environment: 'production',
1549
+ transports: {
1550
+ // Only persist error/warn entries that come from PaymentService to the DB
1551
+ database: {
1552
+ type: 'mongodb',
1553
+ connectionString: process.env.MONGO_URI,
1554
+ database: 'appdb',
1555
+ collection: 'logs',
1556
+ filter: (entry) =>
1557
+ ['error', 'warn'].includes(entry.level) && entry.context === 'PaymentService',
1558
+ },
1559
+
1560
+ // Write everything to the main file, but exclude noisy health-check pings
1561
+ file: {
1562
+ filename: 'app.log',
1563
+ dirname: './logs',
1564
+ filter: (entry) => entry.message !== 'health check',
1565
+ },
1566
+
1567
+ // Console gets everything — no filter
1568
+ console: { colorize: true },
1569
+ },
1570
+ });
1571
+ ```
1572
+
1573
+ The `filter` predicate receives a `TransportLogEntry`:
1574
+
1575
+ ```typescript
1576
+ interface TransportLogEntry {
1577
+ timestamp: Date;
1578
+ level: string; // 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'verbose' | string
1579
+ message: string;
1580
+ data?: Record<string, unknown>;
1581
+ context?: string; // set via logger.child('MyService') or setContext()
1582
+ traceId?: string;
1583
+ appName?: string;
1584
+ environment?: string;
1585
+ }
1586
+ ```
1587
+
1588
+ `filter` and `level` are independent — both must pass for an entry to be written. Use `level` for threshold filtering (everything at or above `warn`) and `filter` for precise, field-level rules.
1589
+
1540
1590
  ---
1541
1591
 
1542
1592
  ## Log search
@@ -1643,8 +1693,10 @@ Or flush and close manually — useful in Kubernetes SIGTERM handlers:
1643
1693
 
1644
1694
  ```typescript
1645
1695
  process.on('SIGTERM', async () => {
1646
- await logger.flush(); // wait for all in-flight writes
1647
- await logger.close(); // close connections, deregister shutdown handlers
1696
+ // close() flushes all transports first, then closes connections.
1697
+ // Any log calls that arrive during the flush (e.g. from Kafka/MongoDB
1698
+ // disconnect handlers) are still written before the gate closes.
1699
+ await logger.close();
1648
1700
  process.exit(0);
1649
1701
  });
1650
1702
  ```
@@ -2317,6 +2369,7 @@ interface LoggerConfig {
2317
2369
  colorize?: boolean;
2318
2370
  timestamp?: boolean;
2319
2371
  format?: 'json' | 'text';
2372
+ filter?: (entry: TransportLogEntry) => boolean;
2320
2373
  };
2321
2374
 
2322
2375
  file?:
@@ -2337,6 +2390,7 @@ interface LoggerConfig {
2337
2390
  maxFiles?: number;
2338
2391
  compress?: boolean;
2339
2392
  };
2393
+ filter?: (entry: TransportLogEntry) => boolean;
2340
2394
  }
2341
2395
  | Array<FileTransportConfig>; // array for multiple file targets
2342
2396
 
@@ -2352,8 +2406,10 @@ interface LoggerConfig {
2352
2406
  username?: string;
2353
2407
  password?: string;
2354
2408
  ssl?: boolean;
2409
+ level?: string; // minimum level threshold for this transport
2355
2410
  batchSize?: number;
2356
2411
  flushInterval?: number; // ms
2412
+ filter?: (entry: TransportLogEntry) => boolean; // entry-level predicate
2357
2413
  }
2358
2414
  | Array<DatabaseTransportConfig>;
2359
2415