scribelog 2.1.0-beta.0 → 2.1.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/README.md +63 -20
- package/dist/index.d.ts +2 -0
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +28 -3
- package/dist/logger.js +368 -35
- package/dist/logger.js.map +1 -1
- package/dist/types.d.ts +33 -3
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -21,6 +21,12 @@
|
|
|
21
21
|
- **Framework adapters (Express, Koa, Fastify, NestJS, Next.js):**
|
|
22
22
|
Ready-to-use middleware/hooks/interceptors for request/response logging with automatic requestId (AsyncLocalStorage), duration, status, and framework tags. Minimal boilerplate.
|
|
23
23
|
- **Profiling & Timing:** Lightweight high-resolution timers (profile/time APIs), including sync/async helpers and start/end merging of metadata.
|
|
24
|
+
- Configurable levels and thresholds: promote slow operations to warn/error via thresholdWarnMs/thresholdErrorMs or custom getLevel(duration, meta).
|
|
25
|
+
- Concurrency-safe timers: profile(label) returns a handle; profileEnd accepts a handle or uses LIFO per label. Optional namespacing with requestId or a custom keyFactory.
|
|
26
|
+
- Orphan cleanup: TTL-based cleanup, periodic sweeping, and maxActiveProfiles limit; stop the background cleaner with logger.dispose().
|
|
27
|
+
- Fast path: when profiling is effectively disabled (no debug, no thresholds/getLevel/profiler.level), time\*/profile calls are no-ops.
|
|
28
|
+
- Configurable tags and fields: compose tags via tagsDefault/tagsMode (append/prepend/replace) and add fieldsDefault without overriding explicit meta.
|
|
29
|
+
- Metrics hook: profiler.onMeasure(event) is called after each measurement (no extra log), ready for Prometheus/Grafana.
|
|
24
30
|
- **Automatic Error Handling:** Optionally catch and log `uncaughtException` and `unhandledRejection` events, including stack traces.
|
|
25
31
|
- **Remote Transports (HTTP, WebSocket, TCP, UDP):**
|
|
26
32
|
Send logs over the network to ELK/Logstash, Graylog, Datadog, or custom collectors. Supports batching (AsyncBatch) and gzip (HTTP).
|
|
@@ -91,37 +97,74 @@ Error: Test error
|
|
|
91
97
|
|
|
92
98
|
## ⏱️ Profiling & Timing
|
|
93
99
|
|
|
94
|
-
|
|
100
|
+
High‑resolution timers for measuring any code block, with smart defaults and advanced controls.
|
|
101
|
+
|
|
102
|
+
Configuration (examples):
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
import { createLogger } from 'scribelog';
|
|
106
|
+
|
|
107
|
+
const logger = createLogger({
|
|
108
|
+
profiler: {
|
|
109
|
+
// Level heuristics
|
|
110
|
+
level: 'debug', // base level for profiling logs (optional)
|
|
111
|
+
thresholdWarnMs: 200, // >=200ms -> warn
|
|
112
|
+
thresholdErrorMs: 1000, // >=1000ms -> error
|
|
113
|
+
// or custom level function:
|
|
114
|
+
// getLevel: (durationMs, meta) => (durationMs > 500 ? 'warn' : 'info'),
|
|
115
|
+
|
|
116
|
+
// Concurrency & keys
|
|
117
|
+
namespaceWithRequestId: true, // key prefix from requestId (if context available)
|
|
118
|
+
// keyFactory: (label, meta) => `${meta?.tenant ?? 'anon'}:${label}:${Date.now()}`,
|
|
119
|
+
|
|
120
|
+
// Orphan cleanup
|
|
121
|
+
ttlMs: 5 * 60_000, // remove timers not ended within 5 min
|
|
122
|
+
cleanupIntervalMs: 60_000, // sweep every 60s
|
|
123
|
+
maxActiveProfiles: 1000, // drop the oldest when the limit is exceeded
|
|
124
|
+
|
|
125
|
+
// Tags & fields
|
|
126
|
+
tagsDefault: ['perf'], // added with 'append' mode by default
|
|
127
|
+
tagsMode: 'append', // 'append' | 'prepend' | 'replace'
|
|
128
|
+
fieldsDefault: { service: 'api' },
|
|
129
|
+
|
|
130
|
+
// Metrics hook (no extra log)
|
|
131
|
+
onMeasure: (e) => {
|
|
132
|
+
// e = { label, durationMs, success?: boolean, level, tags?, requestId?, meta, key? }
|
|
133
|
+
// Send to Prometheus, StatsD, etc.
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Usage patterns:
|
|
95
140
|
|
|
96
141
|
```ts
|
|
97
|
-
// Manual start/stop
|
|
98
|
-
logger.profile('db');
|
|
99
|
-
|
|
100
|
-
logger.profileEnd(
|
|
142
|
+
// 1) Manual start/stop with handle (best for concurrency)
|
|
143
|
+
const h = logger.profile('db', { query: 'SELECT 1' });
|
|
144
|
+
// ... work ...
|
|
145
|
+
logger.profileEnd(h, { rows: 10 }); // merges start+end meta and logs
|
|
101
146
|
|
|
102
|
-
// Aliases
|
|
147
|
+
// 2) Aliases (still handle-capable via time/timeEnd)
|
|
103
148
|
logger.time('calc');
|
|
104
149
|
// ... work ...
|
|
105
|
-
logger.timeEnd('calc');
|
|
150
|
+
logger.timeEnd('calc'); // ends the latest 'calc' via LIFO per label
|
|
106
151
|
|
|
107
|
-
// Sync block
|
|
152
|
+
// 3) Sync block helper
|
|
108
153
|
const value = logger.timeSync('compute', () => 2 + 2, { component: 'math' });
|
|
109
154
|
|
|
110
|
-
// Async block (logs success or error, rethrows on error)
|
|
111
|
-
await logger.timeAsync(
|
|
112
|
-
'
|
|
113
|
-
|
|
114
|
-
return await getUser(42);
|
|
115
|
-
},
|
|
116
|
-
{ component: 'users' }
|
|
117
|
-
);
|
|
155
|
+
// 4) Async block helper (logs success or error, rethrows on error)
|
|
156
|
+
await logger.timeAsync('load-user', async () => getUser(42), {
|
|
157
|
+
component: 'users',
|
|
158
|
+
});
|
|
118
159
|
```
|
|
119
160
|
|
|
120
|
-
|
|
161
|
+
Notes:
|
|
121
162
|
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
163
|
+
- Concurrency-safe: profile(label) returns a unique handle; profileEnd(handle) ends that exact timer. If you pass a plain label, LIFO per label is used.
|
|
164
|
+
- Fast path: when profiling is effectively disabled (no debug and no thresholds/getLevel/profiler.level), time\*/profile calls skip overhead and do not log.
|
|
165
|
+
- Orphan cleanup: timers not ended in time are removed by TTL sweep; the oldest timers can be dropped if maxActiveProfiles is exceeded. Stop the sweeper via logger.dispose().
|
|
166
|
+
- Tags & fields: tagsDefault/tagsMode and fieldsDefault are applied consistently; tags are deduplicated.
|
|
167
|
+
- Metrics hook: profiler.onMeasure(event) is called after each measurement, with merged meta and composed tags, without producing additional logs.
|
|
125
168
|
|
|
126
169
|
---
|
|
127
170
|
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ import { HttpTransport } from './transports/http';
|
|
|
18
18
|
import { WebSocketTransport } from './transports/websocket';
|
|
19
19
|
import { TcpTransport } from './transports/tcp';
|
|
20
20
|
import { UdpTransport } from './transports/udp';
|
|
21
|
+
export type { ProfileEvent } from './types';
|
|
21
22
|
export declare const createLogger: typeof _createLogger;
|
|
22
23
|
export declare const Scribelog: typeof _Scribelog;
|
|
23
24
|
export * from './requestContext';
|
|
@@ -26,6 +27,7 @@ export type LoggerOptions = _LoggerOptions;
|
|
|
26
27
|
export type { AsyncBatchTransportOptions } from './transports/asyncBatch';
|
|
27
28
|
export { standardLevels };
|
|
28
29
|
export type { LogLevel, LogLevels };
|
|
30
|
+
export type { ProfileHandle } from './types';
|
|
29
31
|
export declare const transports: {
|
|
30
32
|
Console: typeof _ConsoleTransport;
|
|
31
33
|
File: typeof _FileTransport;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,qCAGkB;AAUlB,wDAA8D;AAC9D,qCAA+D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,qCAGkB;AAUlB,wDAA8D;AAC9D,qCAA+D;AAgCtD,+FAhCA,uBAAc,OAgCA;AA/BvB,kDAA6E;AAE7E,kDAAkD;AAClD,4CAAoE;AACpE,wBAAwB;AACxB,kDAAoC;AACpC,kDAAwD;AACxD,0CAAgD;AAChD,gDAA6D;AAC7D,wCAAqD;AACrD,gDAAyD;AACzD,0CAAwD;AACxD,0CAAuD;AACvD,4CAAkD;AAClD,sDAA4D;AAC5D,0CAAgD;AAChD,0CAAgD;AAIhD,mCAAmC;AACtB,QAAA,YAAY,GAAG,qBAAa,CAAC;AAC7B,QAAA,SAAS,GAAG,kBAAU,CAAC;AACpC,mDAAiC;AAajC,yEAAyE;AACzE,uBAAuB;AACV,QAAA,UAAU,GAAG;IACxB,OAAO,EAAE,0BAAiB;IAC1B,IAAI,EAAE,oBAAc;IACpB,UAAU,EAAE,gCAAmB;IAC/B,OAAO,EAAE,0BAAgB;IACzB,GAAG,EAAE,kBAAY;IACjB,IAAI,EAAE,oBAAa;IACnB,SAAS,EAAE,8BAAkB;IAC7B,GAAG,EAAE,kBAAY;IACjB,GAAG,EAAE,kBAAY;CAClB,CAAC;AAIF,wBAAwB;AAExB,sBAAsB;AACT,QAAA,MAAM,GAAG,OAAO,CAAC;AAEjB,QAAA,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAOtC,QAAA,QAAQ,GAAG;IACtB,OAAO,EAAE,EAAE,gBAAgB,EAAE,iCAAuB,EAAE;IACtD,GAAG,EAAE,EAAE,gBAAgB,EAAE,yBAAmB,EAAE;IAC9C,OAAO,EAAE,EAAE,YAAY,EAAE,6BAAmB,EAAE;IAC9C,IAAI,EAAE,EAAE,iBAAiB,EAAE,4BAAqB,EAAE;IAClD,IAAI,EAAE,EAAE,gBAAgB,EAAE,2BAAoB,EAAE;CACjD,CAAC"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -8,21 +8,45 @@ export declare class Scribelog implements LoggerInterface {
|
|
|
8
8
|
levels: LogLevels;
|
|
9
9
|
level: LogLevel;
|
|
10
10
|
private transports;
|
|
11
|
+
private profilerOptions;
|
|
11
12
|
private profiles;
|
|
12
13
|
private format;
|
|
13
14
|
private defaultMeta?;
|
|
14
15
|
private options;
|
|
15
16
|
private profileStartMeta;
|
|
17
|
+
private profileSeq;
|
|
18
|
+
private labelStacks;
|
|
19
|
+
private keyToLabel;
|
|
20
|
+
private cleanupTimer?;
|
|
16
21
|
private exitOnError;
|
|
17
22
|
private exceptionHandler?;
|
|
18
23
|
private rejectionHandler?;
|
|
19
24
|
[level: string]: ((message: any, ...args: any[]) => void) | any;
|
|
20
25
|
constructor(options?: LoggerOptions, internalParentLevels?: LogLevels);
|
|
26
|
+
private emitProfileEvent;
|
|
27
|
+
private composeProfileTags;
|
|
28
|
+
private applyDefaultProfileFields;
|
|
29
|
+
private shouldStartProfile;
|
|
30
|
+
private makeProfileKey;
|
|
31
|
+
private pushLabelKey;
|
|
32
|
+
private popLabelKey;
|
|
33
|
+
private removeLabelKey;
|
|
34
|
+
private removeProfileByKey;
|
|
35
|
+
private cleanupProfiles;
|
|
21
36
|
log(level: LogLevel, message: any, ...args: any[]): void;
|
|
22
|
-
profile(label: string, meta?: Record<string, any>):
|
|
23
|
-
|
|
37
|
+
profile(label: string, meta?: Record<string, any>): {
|
|
38
|
+
key: string;
|
|
39
|
+
label: string;
|
|
40
|
+
};
|
|
41
|
+
profileEnd(labelOrHandle: string | {
|
|
42
|
+
key: string;
|
|
43
|
+
label: string;
|
|
44
|
+
}, meta?: Record<string, any>): void;
|
|
24
45
|
time(label: string, meta?: Record<string, any>): void;
|
|
25
|
-
timeEnd(
|
|
46
|
+
timeEnd(labelOrHandle: string | {
|
|
47
|
+
key: string;
|
|
48
|
+
label: string;
|
|
49
|
+
}, meta?: Record<string, any>): void;
|
|
26
50
|
timeSync<T>(label: string, fn: () => T, meta?: Record<string, any>): T;
|
|
27
51
|
timeAsync<T>(label: string, fn: () => Promise<T>, meta?: Record<string, any>): Promise<T>;
|
|
28
52
|
logEntry(entry: LogEntryInput): void;
|
|
@@ -32,6 +56,7 @@ export declare class Scribelog implements LoggerInterface {
|
|
|
32
56
|
private logError;
|
|
33
57
|
private formatError;
|
|
34
58
|
removeExceptionHandlers(): void;
|
|
59
|
+
dispose(): void;
|
|
35
60
|
private processAndTransport;
|
|
36
61
|
private isTransportLevelEnabled;
|
|
37
62
|
}
|
package/dist/logger.js
CHANGED
|
@@ -65,8 +65,13 @@ const requestContext_1 = require("./requestContext");
|
|
|
65
65
|
class Scribelog {
|
|
66
66
|
// Zmieniony konstruktor akceptujący opcjonalne poziomy rodzica
|
|
67
67
|
constructor(options = {}, internalParentLevels) {
|
|
68
|
+
var _a, _b;
|
|
68
69
|
this.profiles = new Map();
|
|
69
70
|
this.profileStartMeta = new Map();
|
|
71
|
+
// --- POCZĄTEK ZMIANY: obsługa współbieżności/kolizji ---
|
|
72
|
+
this.profileSeq = 0;
|
|
73
|
+
this.labelStacks = new Map(); // label -> stos kluczy
|
|
74
|
+
this.keyToLabel = new Map(); // key -> label (odwrotna mapa)
|
|
70
75
|
this.options = Object.assign({}, options); // Zapisz kopię ORYGINALNYCH opcji
|
|
71
76
|
// --- Użyj poziomów rodzica LUB połącz standardowe z opcjami ---
|
|
72
77
|
if (internalParentLevels) {
|
|
@@ -113,6 +118,24 @@ class Scribelog {
|
|
|
113
118
|
this.format = options.format || format.defaultSimpleFormat;
|
|
114
119
|
this.defaultMeta = options.defaultMeta;
|
|
115
120
|
this.exitOnError = options.exitOnError !== false;
|
|
121
|
+
this.profilerOptions = options.profiler || {};
|
|
122
|
+
const ttlMs = this.profilerOptions.ttlMs;
|
|
123
|
+
const cleanupEvery = (_a = this.profilerOptions.cleanupIntervalMs) !== null && _a !== void 0 ? _a : 60000; // domyślnie 60s
|
|
124
|
+
const hasCleanup = typeof ttlMs === 'number' && ttlMs > 0;
|
|
125
|
+
if (hasCleanup) {
|
|
126
|
+
this.cleanupTimer = setInterval(() => {
|
|
127
|
+
try {
|
|
128
|
+
this.cleanupProfiles();
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
console.warn('[scribelog] cleanupProfiles failed:', e);
|
|
132
|
+
}
|
|
133
|
+
}, cleanupEvery);
|
|
134
|
+
// Nie blokuj procesu
|
|
135
|
+
if (typeof ((_b = this.cleanupTimer) === null || _b === void 0 ? void 0 : _b.unref) === 'function') {
|
|
136
|
+
this.cleanupTimer.unref();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
116
139
|
// --- Dynamiczne tworzenie metod dla WSZYSTKICH poziomów ---
|
|
117
140
|
Object.keys(this.levels).forEach((levelName) => {
|
|
118
141
|
// Usunięto warunek `if (levelName in this)`, aby umożliwić nadpisywanie
|
|
@@ -158,6 +181,180 @@ class Scribelog {
|
|
|
158
181
|
process.on('unhandledRejection', this.rejectionHandler);
|
|
159
182
|
}
|
|
160
183
|
}
|
|
184
|
+
emitProfileEvent(params) {
|
|
185
|
+
var _a;
|
|
186
|
+
const cb = (_a = this.profilerOptions) === null || _a === void 0 ? void 0 : _a.onMeasure;
|
|
187
|
+
if (typeof cb !== 'function')
|
|
188
|
+
return;
|
|
189
|
+
try {
|
|
190
|
+
const { label, durationMs, success, level, metaOut, key } = params;
|
|
191
|
+
const event = {
|
|
192
|
+
label,
|
|
193
|
+
durationMs,
|
|
194
|
+
success,
|
|
195
|
+
level,
|
|
196
|
+
tags: Array.isArray(metaOut.tags) ? metaOut.tags : undefined,
|
|
197
|
+
requestId: (metaOut &&
|
|
198
|
+
typeof metaOut.requestId === 'string' &&
|
|
199
|
+
metaOut.requestId) ||
|
|
200
|
+
(0, requestContext_1.getRequestId)(),
|
|
201
|
+
meta: Object.assign({}, metaOut),
|
|
202
|
+
key,
|
|
203
|
+
};
|
|
204
|
+
cb(event);
|
|
205
|
+
}
|
|
206
|
+
catch (e) {
|
|
207
|
+
// Nigdy nie przerywaj logowania przez błąd hooka
|
|
208
|
+
console.warn('[scribelog] profiler.onMeasure hook threw:', e);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
composeProfileTags(existing) {
|
|
212
|
+
const profiler = this.profilerOptions || {};
|
|
213
|
+
const base = ['profile'];
|
|
214
|
+
const def = Array.isArray(profiler.tagsDefault) ? profiler.tagsDefault : [];
|
|
215
|
+
const provided = Array.isArray(existing) ? existing : [];
|
|
216
|
+
const mode = profiler.tagsMode || 'append';
|
|
217
|
+
let ordered;
|
|
218
|
+
switch (mode) {
|
|
219
|
+
case 'replace':
|
|
220
|
+
ordered = provided.length ? provided : def.length ? def : base;
|
|
221
|
+
break;
|
|
222
|
+
case 'prepend':
|
|
223
|
+
ordered = [...base, ...def, ...provided];
|
|
224
|
+
break;
|
|
225
|
+
case 'append':
|
|
226
|
+
default:
|
|
227
|
+
ordered = [...provided, ...base, ...def];
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
// deduplikacja z zachowaniem kolejności
|
|
231
|
+
const seen = new Set();
|
|
232
|
+
const out = [];
|
|
233
|
+
for (const t of ordered) {
|
|
234
|
+
if (typeof t === 'string' && !seen.has(t)) {
|
|
235
|
+
seen.add(t);
|
|
236
|
+
out.push(t);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return out;
|
|
240
|
+
}
|
|
241
|
+
applyDefaultProfileFields(metaOut) {
|
|
242
|
+
var _a;
|
|
243
|
+
const fields = (_a = this.profilerOptions) === null || _a === void 0 ? void 0 : _a.fieldsDefault;
|
|
244
|
+
if (fields && typeof fields === 'object') {
|
|
245
|
+
for (const key of Object.keys(fields)) {
|
|
246
|
+
if (metaOut[key] === undefined) {
|
|
247
|
+
metaOut[key] = fields[key];
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
shouldStartProfile() {
|
|
253
|
+
const p = this.profilerOptions || {};
|
|
254
|
+
// Jeśli użytkownik podał getLevel, nie możemy z góry określić poziomu -> profiluj
|
|
255
|
+
if (typeof p.getLevel === 'function')
|
|
256
|
+
return true;
|
|
257
|
+
const baseLevel = (p.level || 'debug');
|
|
258
|
+
if (this.isLevelEnabled(baseLevel))
|
|
259
|
+
return true;
|
|
260
|
+
// Jeżeli zdefiniowane progi, sprawdź czy wyższe poziomy są włączone
|
|
261
|
+
if (p.thresholdErrorMs !== undefined &&
|
|
262
|
+
this.isLevelEnabled('error')) {
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
if (p.thresholdWarnMs !== undefined &&
|
|
266
|
+
this.isLevelEnabled('warn')) {
|
|
267
|
+
return true;
|
|
268
|
+
}
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
makeProfileKey(label, meta) {
|
|
272
|
+
const profiler = this.profilerOptions || {};
|
|
273
|
+
try {
|
|
274
|
+
if (typeof (profiler === null || profiler === void 0 ? void 0 : profiler.keyFactory) === 'function') {
|
|
275
|
+
const k = profiler.keyFactory(label, meta);
|
|
276
|
+
if (k && typeof k === 'string')
|
|
277
|
+
return k;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch (e) {
|
|
281
|
+
console.warn('[scribelog] profiler.keyFactory threw:', e);
|
|
282
|
+
}
|
|
283
|
+
const rid = (profiler === null || profiler === void 0 ? void 0 : profiler.namespaceWithRequestId) && typeof requestContext_1.getRequestId === 'function'
|
|
284
|
+
? (0, requestContext_1.getRequestId)()
|
|
285
|
+
: undefined;
|
|
286
|
+
this.profileSeq = (this.profileSeq + 1) % Number.MAX_SAFE_INTEGER;
|
|
287
|
+
const prefix = rid ? `${rid}:` : '';
|
|
288
|
+
return `${prefix}${label}#${this.profileSeq}`;
|
|
289
|
+
}
|
|
290
|
+
pushLabelKey(label, key) {
|
|
291
|
+
const stack = this.labelStacks.get(label) || [];
|
|
292
|
+
stack.push(key);
|
|
293
|
+
this.labelStacks.set(label, stack);
|
|
294
|
+
}
|
|
295
|
+
popLabelKey(label) {
|
|
296
|
+
const stack = this.labelStacks.get(label);
|
|
297
|
+
if (!stack || stack.length === 0)
|
|
298
|
+
return undefined;
|
|
299
|
+
const key = stack.pop();
|
|
300
|
+
if (stack.length === 0)
|
|
301
|
+
this.labelStacks.delete(label);
|
|
302
|
+
else
|
|
303
|
+
this.labelStacks.set(label, stack);
|
|
304
|
+
return key;
|
|
305
|
+
}
|
|
306
|
+
removeLabelKey(label, key) {
|
|
307
|
+
const stack = this.labelStacks.get(label);
|
|
308
|
+
if (!stack || stack.length === 0)
|
|
309
|
+
return;
|
|
310
|
+
const idx = stack.lastIndexOf(key);
|
|
311
|
+
if (idx >= 0) {
|
|
312
|
+
stack.splice(idx, 1);
|
|
313
|
+
if (stack.length === 0)
|
|
314
|
+
this.labelStacks.delete(label);
|
|
315
|
+
else
|
|
316
|
+
this.labelStacks.set(label, stack);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
removeProfileByKey(key) {
|
|
320
|
+
// Usuń z profiles i powiązanych struktur
|
|
321
|
+
this.profiles.delete(key);
|
|
322
|
+
this.profileStartMeta.delete(key);
|
|
323
|
+
const label = this.keyToLabel.get(key);
|
|
324
|
+
if (label) {
|
|
325
|
+
this.removeLabelKey(label, key);
|
|
326
|
+
this.keyToLabel.delete(key);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
cleanupProfiles() {
|
|
330
|
+
var _a, _b;
|
|
331
|
+
const ttlMs = (_a = this.profilerOptions) === null || _a === void 0 ? void 0 : _a.ttlMs;
|
|
332
|
+
if (typeof ttlMs === 'number' && ttlMs > 0) {
|
|
333
|
+
const now = process.hrtime.bigint();
|
|
334
|
+
const ttlNs = BigInt(Math.floor(ttlMs * 1e6)); // ms -> ns
|
|
335
|
+
// profiles: Map<key, startNs>
|
|
336
|
+
for (const [key, startNs] of this.profiles) {
|
|
337
|
+
const ageNs = now - startNs;
|
|
338
|
+
if (ageNs > ttlNs) {
|
|
339
|
+
// Orphan cleanup
|
|
340
|
+
this.removeProfileByKey(key);
|
|
341
|
+
// Uwaga: używamy console.warn aby uniknąć rekurencji loggera
|
|
342
|
+
console.warn(`[scribelog] Removed orphaned profile "${key}" after exceeding TTL ${ttlMs}ms`);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
const maxActive = (_b = this.profilerOptions) === null || _b === void 0 ? void 0 : _b.maxActiveProfiles;
|
|
347
|
+
if (typeof maxActive === 'number' && maxActive > 0) {
|
|
348
|
+
while (this.profiles.size > maxActive) {
|
|
349
|
+
// Usuń najstarszy (Map zachowuje kolejność wstawiania)
|
|
350
|
+
const oldestKey = this.profiles.keys().next().value;
|
|
351
|
+
if (!oldestKey)
|
|
352
|
+
break;
|
|
353
|
+
this.removeProfileByKey(oldestKey);
|
|
354
|
+
console.warn(`[scribelog] Removed oldest active profile "${oldestKey}" due to maxActiveProfiles=${maxActive}`);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
161
358
|
// Metody logowania poziomów (error, warn, info itd.) są generowane dynamicznie.
|
|
162
359
|
// Metoda log
|
|
163
360
|
// ...existing code...
|
|
@@ -203,73 +400,199 @@ class Scribelog {
|
|
|
203
400
|
}
|
|
204
401
|
// ...existing code...
|
|
205
402
|
profile(label, meta) {
|
|
206
|
-
|
|
403
|
+
var _a;
|
|
404
|
+
// Fast‑path: jeśli profilowanie wyłączone (np. brak debug i progów), nie zakładaj Map
|
|
405
|
+
if (!this.shouldStartProfile()) {
|
|
406
|
+
return { key: '', label }; // no-op handle
|
|
407
|
+
}
|
|
408
|
+
const key = this.makeProfileKey(label, meta);
|
|
409
|
+
this.profiles.set(key, process.hrtime.bigint());
|
|
207
410
|
if (meta && typeof meta === 'object') {
|
|
208
|
-
this.profileStartMeta.set(
|
|
411
|
+
this.profileStartMeta.set(key, meta);
|
|
209
412
|
}
|
|
210
|
-
|
|
413
|
+
this.pushLabelKey(label, key);
|
|
414
|
+
this.keyToLabel.set(key, label);
|
|
415
|
+
// Egzekwuj maxActiveProfiles “na gorąco”
|
|
416
|
+
const maxActive = (_a = this.profilerOptions) === null || _a === void 0 ? void 0 : _a.maxActiveProfiles;
|
|
417
|
+
if (typeof maxActive === 'number' && maxActive > 0) {
|
|
418
|
+
while (this.profiles.size > maxActive) {
|
|
419
|
+
const oldestKey = this.profiles.keys().next().value;
|
|
420
|
+
if (!oldestKey || oldestKey === key)
|
|
421
|
+
break;
|
|
422
|
+
this.removeProfileByKey(oldestKey);
|
|
423
|
+
console.warn(`[scribelog] Removed oldest active profile "${oldestKey}" due to maxActiveProfiles=${maxActive}`);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return { key, label };
|
|
211
427
|
}
|
|
212
|
-
profileEnd(
|
|
213
|
-
const
|
|
428
|
+
profileEnd(labelOrHandle, meta) {
|
|
429
|
+
const isHandle = typeof labelOrHandle === 'object' && labelOrHandle !== null;
|
|
430
|
+
const label = isHandle
|
|
431
|
+
? labelOrHandle.label
|
|
432
|
+
: labelOrHandle;
|
|
433
|
+
const key = isHandle ? labelOrHandle.key : this.popLabelKey(label);
|
|
434
|
+
if (!key) {
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
if (isHandle) {
|
|
438
|
+
this.removeLabelKey(label, key);
|
|
439
|
+
}
|
|
440
|
+
this.keyToLabel.delete(key);
|
|
441
|
+
const start = this.profiles.get(key);
|
|
442
|
+
// NEW: jeśli start nie istnieje (profil usunięty przez TTL/limit), nie loguj
|
|
443
|
+
if (start === undefined) {
|
|
444
|
+
this.profileStartMeta.delete(key);
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
214
447
|
const end = process.hrtime.bigint();
|
|
215
|
-
const durationMs =
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
448
|
+
const durationMs = Number(end - start) / 1e6;
|
|
449
|
+
this.profiles.delete(key);
|
|
450
|
+
const startMeta = this.profileStartMeta.get(key);
|
|
451
|
+
if (startMeta)
|
|
452
|
+
this.profileStartMeta.delete(key);
|
|
453
|
+
const metaOut = Object.assign(Object.assign(Object.assign({}, (startMeta || {})), (meta || {})), { profileLabel: label, durationMs: Math.round(durationMs) });
|
|
454
|
+
metaOut.tags = this.composeProfileTags(metaOut.tags);
|
|
455
|
+
this.applyDefaultProfileFields(metaOut);
|
|
456
|
+
// Ustal poziom wg opcji/heurystyki
|
|
457
|
+
const profiler = this.profilerOptions || {};
|
|
458
|
+
let level = metaOut.level || profiler.level || 'debug';
|
|
459
|
+
if (typeof profiler.getLevel === 'function') {
|
|
460
|
+
level = profiler.getLevel(durationMs, metaOut);
|
|
227
461
|
}
|
|
228
|
-
else
|
|
229
|
-
|
|
462
|
+
else if (profiler.thresholdErrorMs !== undefined &&
|
|
463
|
+
durationMs >= profiler.thresholdErrorMs) {
|
|
464
|
+
level = 'error';
|
|
230
465
|
}
|
|
231
|
-
|
|
466
|
+
else if (profiler.thresholdWarnMs !== undefined &&
|
|
467
|
+
durationMs >= profiler.thresholdWarnMs) {
|
|
468
|
+
level = 'warn';
|
|
469
|
+
}
|
|
470
|
+
if ('level' in metaOut)
|
|
471
|
+
delete metaOut.level;
|
|
472
|
+
this.emitProfileEvent({
|
|
473
|
+
label,
|
|
474
|
+
durationMs: Math.round(durationMs),
|
|
475
|
+
level,
|
|
476
|
+
metaOut,
|
|
477
|
+
key,
|
|
478
|
+
});
|
|
479
|
+
// Poprawka: użyj wyliczonego poziomu
|
|
480
|
+
this.log(level, label, metaOut);
|
|
232
481
|
}
|
|
233
482
|
// Alias: time/timeEnd
|
|
234
483
|
time(label, meta) {
|
|
235
484
|
this.profile(label, meta);
|
|
236
485
|
}
|
|
237
|
-
timeEnd(
|
|
238
|
-
this.profileEnd(
|
|
486
|
+
timeEnd(labelOrHandle, meta) {
|
|
487
|
+
this.profileEnd(labelOrHandle, meta);
|
|
239
488
|
}
|
|
240
489
|
// Wygodne pomiary bloków sync/async
|
|
241
490
|
timeSync(label, fn, meta) {
|
|
491
|
+
// Fast‑path: wyłączone profilowanie -> bez logowania
|
|
492
|
+
if (!this.shouldStartProfile()) {
|
|
493
|
+
return fn();
|
|
494
|
+
}
|
|
242
495
|
const start = process.hrtime.bigint();
|
|
243
496
|
try {
|
|
244
497
|
return fn();
|
|
245
498
|
}
|
|
246
499
|
finally {
|
|
247
500
|
const durationMs = Number(process.hrtime.bigint() - start) / 1e6;
|
|
248
|
-
const metaOut = Object.assign(Object.assign({}, (meta || {})), { profileLabel: label, durationMs: Math.round(durationMs), success: true, tags: Array.isArray(meta === null || meta === void 0 ? void 0 : meta.tags)
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
this.
|
|
501
|
+
const metaOut = Object.assign(Object.assign({}, (meta || {})), { profileLabel: label, durationMs: Math.round(durationMs), success: true, tags: Array.isArray(meta === null || meta === void 0 ? void 0 : meta.tags) ? [...meta.tags] : undefined });
|
|
502
|
+
metaOut.tags = this.composeProfileTags(metaOut.tags);
|
|
503
|
+
this.applyDefaultProfileFields(metaOut);
|
|
504
|
+
const profiler = this.profilerOptions || {};
|
|
505
|
+
let level = metaOut.level || profiler.level || 'debug';
|
|
506
|
+
if (typeof profiler.getLevel === 'function') {
|
|
507
|
+
level = profiler.getLevel(durationMs, metaOut);
|
|
508
|
+
}
|
|
509
|
+
else if (profiler.thresholdErrorMs !== undefined &&
|
|
510
|
+
durationMs >= profiler.thresholdErrorMs) {
|
|
511
|
+
level = 'error';
|
|
512
|
+
}
|
|
513
|
+
else if (profiler.thresholdWarnMs !== undefined &&
|
|
514
|
+
durationMs >= profiler.thresholdWarnMs) {
|
|
515
|
+
level = 'warn';
|
|
516
|
+
}
|
|
517
|
+
if ('level' in metaOut)
|
|
518
|
+
delete metaOut.level;
|
|
519
|
+
this.emitProfileEvent({
|
|
520
|
+
label,
|
|
521
|
+
durationMs: Math.round(durationMs),
|
|
522
|
+
success: true,
|
|
523
|
+
level,
|
|
524
|
+
metaOut,
|
|
525
|
+
});
|
|
526
|
+
this.log(level, label, metaOut);
|
|
252
527
|
}
|
|
253
528
|
}
|
|
254
529
|
timeAsync(label, fn, meta) {
|
|
255
530
|
return __awaiter(this, void 0, void 0, function* () {
|
|
531
|
+
// Fast‑path: wyłączone profilowanie -> bez logowania
|
|
532
|
+
if (!this.shouldStartProfile()) {
|
|
533
|
+
return fn();
|
|
534
|
+
}
|
|
256
535
|
const start = process.hrtime.bigint();
|
|
257
536
|
try {
|
|
258
537
|
const result = yield fn();
|
|
259
538
|
const durationMs = Number(process.hrtime.bigint() - start) / 1e6;
|
|
260
|
-
const metaOut = Object.assign(Object.assign({}, (meta || {})), { profileLabel: label, durationMs: Math.round(durationMs), success: true, tags: Array.isArray(meta === null || meta === void 0 ? void 0 : meta.tags)
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
this.
|
|
539
|
+
const metaOut = Object.assign(Object.assign({}, (meta || {})), { profileLabel: label, durationMs: Math.round(durationMs), success: true, tags: Array.isArray(meta === null || meta === void 0 ? void 0 : meta.tags) ? [...meta.tags] : undefined });
|
|
540
|
+
metaOut.tags = this.composeProfileTags(metaOut.tags);
|
|
541
|
+
this.applyDefaultProfileFields(metaOut);
|
|
542
|
+
const profiler = this.profilerOptions || {};
|
|
543
|
+
let level = metaOut.level || profiler.level || 'debug';
|
|
544
|
+
if (typeof profiler.getLevel === 'function') {
|
|
545
|
+
level = profiler.getLevel(durationMs, metaOut);
|
|
546
|
+
}
|
|
547
|
+
else if (profiler.thresholdErrorMs !== undefined &&
|
|
548
|
+
durationMs >= profiler.thresholdErrorMs) {
|
|
549
|
+
level = 'error';
|
|
550
|
+
}
|
|
551
|
+
else if (profiler.thresholdWarnMs !== undefined &&
|
|
552
|
+
durationMs >= profiler.thresholdWarnMs) {
|
|
553
|
+
level = 'warn';
|
|
554
|
+
}
|
|
555
|
+
if ('level' in metaOut)
|
|
556
|
+
delete metaOut.level;
|
|
557
|
+
this.emitProfileEvent({
|
|
558
|
+
label,
|
|
559
|
+
durationMs: Math.round(durationMs),
|
|
560
|
+
success: true,
|
|
561
|
+
level,
|
|
562
|
+
metaOut,
|
|
563
|
+
});
|
|
564
|
+
this.log(level, label, metaOut);
|
|
264
565
|
return result;
|
|
265
566
|
}
|
|
266
567
|
catch (error) {
|
|
267
568
|
const durationMs = Number(process.hrtime.bigint() - start) / 1e6;
|
|
268
|
-
const metaOut = Object.assign(Object.assign({}, (meta || {})), { profileLabel: label, durationMs: Math.round(durationMs), success: false, error, tags: Array.isArray(meta === null || meta === void 0 ? void 0 : meta.tags)
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
569
|
+
const metaOut = Object.assign(Object.assign({}, (meta || {})), { profileLabel: label, durationMs: Math.round(durationMs), success: false, error, tags: Array.isArray(meta === null || meta === void 0 ? void 0 : meta.tags) ? [...meta.tags] : undefined });
|
|
570
|
+
metaOut.tags = this.composeProfileTags(metaOut.tags);
|
|
571
|
+
this.applyDefaultProfileFields(metaOut);
|
|
572
|
+
const profiler = this.profilerOptions || {};
|
|
573
|
+
let level = metaOut.level || profiler.level || 'debug';
|
|
574
|
+
if (typeof profiler.getLevel === 'function') {
|
|
575
|
+
level = profiler.getLevel(durationMs, metaOut);
|
|
576
|
+
}
|
|
577
|
+
else if (profiler.thresholdErrorMs !== undefined &&
|
|
578
|
+
durationMs >= profiler.thresholdErrorMs) {
|
|
579
|
+
level = 'error';
|
|
580
|
+
}
|
|
581
|
+
else if (profiler.thresholdWarnMs !== undefined &&
|
|
582
|
+
durationMs >= profiler.thresholdWarnMs) {
|
|
583
|
+
level = 'warn';
|
|
584
|
+
}
|
|
585
|
+
if ('level' in metaOut)
|
|
586
|
+
delete metaOut.level;
|
|
587
|
+
// FIX: emit success=false w evencie
|
|
588
|
+
this.emitProfileEvent({
|
|
589
|
+
label,
|
|
590
|
+
durationMs: Math.round(durationMs),
|
|
591
|
+
success: false,
|
|
592
|
+
level,
|
|
593
|
+
metaOut,
|
|
594
|
+
});
|
|
595
|
+
this.log(level, label, metaOut);
|
|
273
596
|
throw error;
|
|
274
597
|
}
|
|
275
598
|
});
|
|
@@ -344,6 +667,16 @@ class Scribelog {
|
|
|
344
667
|
process.removeListener('unhandledRejection', this.rejectionHandler);
|
|
345
668
|
this.rejectionHandler = undefined;
|
|
346
669
|
}
|
|
670
|
+
if (this.cleanupTimer) {
|
|
671
|
+
clearInterval(this.cleanupTimer);
|
|
672
|
+
this.cleanupTimer = undefined;
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
dispose() {
|
|
676
|
+
if (this.cleanupTimer) {
|
|
677
|
+
clearInterval(this.cleanupTimer);
|
|
678
|
+
this.cleanupTimer = undefined;
|
|
679
|
+
}
|
|
347
680
|
}
|
|
348
681
|
// Metoda processAndTransport
|
|
349
682
|
processAndTransport(logEntry) {
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -29,6 +29,10 @@ export interface FileTransportOptions {
|
|
|
29
29
|
fsWriteStreamOptions?: object;
|
|
30
30
|
utc?: boolean;
|
|
31
31
|
}
|
|
32
|
+
export interface ProfileHandle {
|
|
33
|
+
key: string;
|
|
34
|
+
label: string;
|
|
35
|
+
}
|
|
32
36
|
export interface Transport {
|
|
33
37
|
log(processedEntry: Record<string, any> | string): void;
|
|
34
38
|
level?: LogLevel;
|
|
@@ -47,6 +51,31 @@ export interface LoggerOptions {
|
|
|
47
51
|
handleExceptions?: boolean;
|
|
48
52
|
handleRejections?: boolean;
|
|
49
53
|
exitOnError?: boolean;
|
|
54
|
+
profiler?: {
|
|
55
|
+
level?: LogLevel;
|
|
56
|
+
thresholdWarnMs?: number;
|
|
57
|
+
thresholdErrorMs?: number;
|
|
58
|
+
getLevel?: (durationMs: number, meta?: Record<string, any>) => LogLevel;
|
|
59
|
+
namespaceWithRequestId?: boolean;
|
|
60
|
+
keyFactory?: (label: string, meta?: Record<string, any>) => string;
|
|
61
|
+
ttlMs?: number;
|
|
62
|
+
cleanupIntervalMs?: number;
|
|
63
|
+
maxActiveProfiles?: number;
|
|
64
|
+
tagsDefault?: string[];
|
|
65
|
+
tagsMode?: 'append' | 'prepend' | 'replace';
|
|
66
|
+
fieldsDefault?: Record<string, any>;
|
|
67
|
+
onMeasure?: (event: ProfileEvent) => void;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export interface ProfileEvent {
|
|
71
|
+
label: string;
|
|
72
|
+
durationMs: number;
|
|
73
|
+
success?: boolean;
|
|
74
|
+
level: LogLevel;
|
|
75
|
+
tags?: string[];
|
|
76
|
+
requestId?: string;
|
|
77
|
+
meta?: Record<string, any>;
|
|
78
|
+
key?: string;
|
|
50
79
|
}
|
|
51
80
|
interface BaseLoggerInterface {
|
|
52
81
|
logEntry(entry: Omit<LogInfo, 'timestamp' | 'level' | 'message'> & Partial<Pick<LogInfo, 'level' | 'message' | 'splat'>> & {
|
|
@@ -58,11 +87,12 @@ interface BaseLoggerInterface {
|
|
|
58
87
|
isLevelEnabled(level: LogLevel): boolean;
|
|
59
88
|
addTransport(transport: Transport): void;
|
|
60
89
|
removeExceptionHandlers?(): void;
|
|
90
|
+
dispose(): void;
|
|
61
91
|
child(defaultMeta: Record<string, any>): LoggerInterface;
|
|
62
|
-
profile(label: string, meta?: Record<string, any>):
|
|
63
|
-
profileEnd(
|
|
92
|
+
profile(label: string, meta?: Record<string, any>): ProfileHandle;
|
|
93
|
+
profileEnd(labelOrHandle: string | ProfileHandle, meta?: Record<string, any>): void;
|
|
64
94
|
time(label: string, meta?: Record<string, any>): void;
|
|
65
|
-
timeEnd(
|
|
95
|
+
timeEnd(labelOrHandle: string | ProfileHandle, meta?: Record<string, any>): void;
|
|
66
96
|
timeSync<T>(label: string, fn: () => T, meta?: Record<string, any>): T;
|
|
67
97
|
timeAsync<T>(label: string, fn: () => Promise<T>, meta?: Record<string, any>): Promise<T>;
|
|
68
98
|
}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AAqKA,wBAAwB"}
|