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.
- package/README.md +58 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{logitron-logger.module-NLCrDkXA.d.mts → logitron-logger.module-B8NklSC4.d.mts} +6 -3
- package/dist/logitron-logger.module-B8NklSC4.d.mts.map +1 -0
- package/dist/{logitron-logger.module-209uTmVY.d.ts → logitron-logger.module-BLT1y5Iq.d.ts} +6 -3
- package/dist/logitron-logger.module-BLT1y5Iq.d.ts.map +1 -0
- package/dist/{logitron-logger.module-BFNsUfx7.mjs → logitron-logger.module-Bt_Jei1V.mjs} +73 -21
- package/dist/logitron-logger.module-Bt_Jei1V.mjs.map +1 -0
- package/dist/{logitron-logger.module-DC0qwI3N.js → logitron-logger.module-bJ1hGhaL.js} +73 -21
- package/dist/logitron-logger.module-bJ1hGhaL.js.map +1 -0
- package/dist/nest.d.mts +1 -1
- package/dist/nest.d.ts +1 -1
- package/dist/nest.js +2 -2
- package/dist/nest.mjs +2 -2
- package/dist/{transport.manager-DsvWfJ_b.mjs → transport.manager-CaL4XuLD.mjs} +36 -17
- package/dist/transport.manager-CaL4XuLD.mjs.map +1 -0
- package/dist/{transport.manager-CgeSNG_8.js → transport.manager-zgEZCJhR.js} +36 -17
- package/dist/transport.manager-zgEZCJhR.js.map +1 -0
- package/dist/transports.d.mts +14 -1
- package/dist/transports.d.mts.map +1 -1
- package/dist/transports.d.ts +14 -1
- package/dist/transports.d.ts.map +1 -1
- package/dist/transports.js +1 -1
- package/dist/transports.mjs +1 -1
- package/package.json +1 -1
- package/dist/logitron-logger.module-209uTmVY.d.ts.map +0 -1
- package/dist/logitron-logger.module-BFNsUfx7.mjs.map +0 -1
- package/dist/logitron-logger.module-DC0qwI3N.js.map +0 -1
- package/dist/logitron-logger.module-NLCrDkXA.d.mts.map +0 -1
- package/dist/transport.manager-CgeSNG_8.js.map +0 -1
- 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
|
-
|
|
1647
|
-
|
|
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
|
|