@spinajs/log-common 2.0.480 → 2.0.482
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 +125 -4
- package/lib/cjs/BatchQueue.d.ts +127 -0
- package/lib/cjs/BatchQueue.d.ts.map +1 -0
- package/lib/cjs/BatchQueue.js +126 -0
- package/lib/cjs/BatchQueue.js.map +1 -0
- package/lib/cjs/filters/filter.d.ts +27 -0
- package/lib/cjs/filters/filter.d.ts.map +1 -0
- package/lib/cjs/filters/filter.js +20 -0
- package/lib/cjs/filters/filter.js.map +1 -0
- package/lib/cjs/filters/whenRepeated.d.ts +52 -0
- package/lib/cjs/filters/whenRepeated.d.ts.map +1 -0
- package/lib/cjs/filters/whenRepeated.js +98 -0
- package/lib/cjs/filters/whenRepeated.js.map +1 -0
- package/lib/cjs/format.d.ts +20 -0
- package/lib/cjs/format.d.ts.map +1 -0
- package/lib/cjs/format.js +75 -0
- package/lib/cjs/format.js.map +1 -0
- package/lib/cjs/index.d.ts +260 -21
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +207 -33
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/perf.d.ts +109 -0
- package/lib/cjs/perf.d.ts.map +1 -0
- package/lib/cjs/perf.js +162 -0
- package/lib/cjs/perf.js.map +1 -0
- package/lib/cjs/persistence.d.ts +19 -0
- package/lib/cjs/persistence.d.ts.map +1 -0
- package/lib/cjs/persistence.js +137 -0
- package/lib/cjs/persistence.js.map +1 -0
- package/lib/cjs/serializers.d.ts +77 -0
- package/lib/cjs/serializers.d.ts.map +1 -0
- package/lib/cjs/serializers.js +215 -0
- package/lib/cjs/serializers.js.map +1 -0
- package/lib/mjs/BatchQueue.d.ts +127 -0
- package/lib/mjs/BatchQueue.d.ts.map +1 -0
- package/lib/mjs/BatchQueue.js +122 -0
- package/lib/mjs/BatchQueue.js.map +1 -0
- package/lib/mjs/filters/filter.d.ts +27 -0
- package/lib/mjs/filters/filter.d.ts.map +1 -0
- package/lib/mjs/filters/filter.js +16 -0
- package/lib/mjs/filters/filter.js.map +1 -0
- package/lib/mjs/filters/whenRepeated.d.ts +52 -0
- package/lib/mjs/filters/whenRepeated.d.ts.map +1 -0
- package/lib/mjs/filters/whenRepeated.js +95 -0
- package/lib/mjs/filters/whenRepeated.js.map +1 -0
- package/lib/mjs/format.d.ts +20 -0
- package/lib/mjs/format.d.ts.map +1 -0
- package/lib/mjs/format.js +72 -0
- package/lib/mjs/format.js.map +1 -0
- package/lib/mjs/index.d.ts +260 -21
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +201 -10
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/perf.d.ts +109 -0
- package/lib/mjs/perf.d.ts.map +1 -0
- package/lib/mjs/perf.js +157 -0
- package/lib/mjs/perf.js.map +1 -0
- package/lib/mjs/persistence.d.ts +19 -0
- package/lib/mjs/persistence.d.ts.map +1 -0
- package/lib/mjs/persistence.js +132 -0
- package/lib/mjs/persistence.js.map +1 -0
- package/lib/mjs/serializers.d.ts +77 -0
- package/lib/mjs/serializers.d.ts.map +1 -0
- package/lib/mjs/serializers.js +208 -0
- package/lib/mjs/serializers.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +8 -9
package/lib/mjs/index.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { Container, SyncService } from "@spinajs/di";
|
|
2
|
+
export * from "./serializers.js";
|
|
3
|
+
export * from "./filters/filter.js";
|
|
4
|
+
export * from "./filters/whenRepeated.js";
|
|
5
|
+
export * from "./BatchQueue.js";
|
|
6
|
+
export * from "./persistence.js";
|
|
7
|
+
export * from "./perf.js";
|
|
8
|
+
import type { IWhenRepeatedOptions } from "./filters/whenRepeated.js";
|
|
9
|
+
import type { ILogFilterOptions, LogFilter } from "./filters/filter.js";
|
|
2
10
|
export declare enum LogLevel {
|
|
3
11
|
Security = 999,
|
|
4
12
|
Fatal = 6,
|
|
@@ -19,6 +27,20 @@ export declare const StrToLogLevel: {
|
|
|
19
27
|
fatal: LogLevel;
|
|
20
28
|
security: LogLevel;
|
|
21
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Sentinel level sitting one ABOVE {@link LogLevel.Security} ( SpinaJS's highest
|
|
32
|
+
* real level ). Used by `Log.disableAll()` as the runtime override so even a
|
|
33
|
+
* `security()` call is gated out - `isEnabled` compares numerically, so nothing
|
|
34
|
+
* ever reaches it.
|
|
35
|
+
*/
|
|
36
|
+
export declare const SILENT_LEVEL: number;
|
|
37
|
+
/**
|
|
38
|
+
* Normalises a level given either as a {@link LogLevel} number or a level name
|
|
39
|
+
* ( "trace" | "debug" | ... ) to its numeric value. Single validation choke
|
|
40
|
+
* point: an unknown name throws a clear error. Numbers pass straight through
|
|
41
|
+
* ( so {@link SILENT_LEVEL } and other synthetic values are accepted ).
|
|
42
|
+
*/
|
|
43
|
+
export declare function normalizeLevel(level: LogLevel | string): LogLevel;
|
|
22
44
|
export declare const LogLevelStrings: {
|
|
23
45
|
1: string;
|
|
24
46
|
5: string;
|
|
@@ -29,20 +51,75 @@ export declare const LogLevelStrings: {
|
|
|
29
51
|
0: string;
|
|
30
52
|
4: string;
|
|
31
53
|
};
|
|
54
|
+
/**
|
|
55
|
+
* Maps SpinaJS log levels onto the OpenTelemetry SeverityNumber scale ( 1..24 ),
|
|
56
|
+
* so structured logs can be severity-ranked/filtered by any OTel-aware backend
|
|
57
|
+
* ( Grafana, Datadog, Elastic, OTLP pipelines ). Anchored on the OTel bands:
|
|
58
|
+
* TRACE 1-4, DEBUG 5-8, INFO 9-12, WARN 13-16, ERROR 17-20, FATAL 21-24.
|
|
59
|
+
* Success sits in the INFO band ( above plain info ); Security is mapped to the
|
|
60
|
+
* top of the FATAL band as SpinaJS's highest severity.
|
|
61
|
+
*/
|
|
62
|
+
export declare const LogLevelToSeverityNumber: Record<LogLevel, number>;
|
|
32
63
|
export interface ILogRule {
|
|
33
64
|
name: string;
|
|
34
65
|
level: "trace" | "debug" | "info" | "warn" | "error" | "fatal" | "security" | "success";
|
|
35
66
|
target: string | string[];
|
|
67
|
+
/**
|
|
68
|
+
* Optional UPPER bound of the level window this rule routes ( inclusive ).
|
|
69
|
+
* `level` is the lower bound; when `maxLevel` is set the rule only routes
|
|
70
|
+
* entries whose level is in `[level, maxLevel]` ( eg. `level:"warn"` +
|
|
71
|
+
* `maxLevel:"error"` routes warn/error but NOT fatal/security ). Defaults to
|
|
72
|
+
* the highest level ( security ) so a plain min-only rule keeps working.
|
|
73
|
+
*/
|
|
74
|
+
maxLevel?: ILogRule["level"];
|
|
75
|
+
/**
|
|
76
|
+
* Stop evaluating further rules for a logger once this matching rule is applied
|
|
77
|
+
* ( NLog-style ). Earlier matched rules and this one still apply.
|
|
78
|
+
*/
|
|
79
|
+
final?: boolean;
|
|
36
80
|
}
|
|
37
81
|
export interface ITargetsOption {
|
|
38
82
|
name: string;
|
|
39
83
|
type: string;
|
|
40
84
|
options?: ICommonTargetOptions;
|
|
85
|
+
/**
|
|
86
|
+
* When `false` the target is NOT instantiated at all ( its class is never
|
|
87
|
+
* constructed, so a disabled FileTarget never opens its file / starts timers ).
|
|
88
|
+
* A rule referencing only disabled targets is silently skipped; a rule
|
|
89
|
+
* referencing a target NAME that does not exist still throws. Default `true`.
|
|
90
|
+
*/
|
|
91
|
+
enabled?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Per-target filter pipeline, applied ONLY when writing to THIS target ( in
|
|
94
|
+
* addition to the logger-level `filters` ). Each entry is `{ type, ...opts }`
|
|
95
|
+
* where `type` is the DI string name of a {@link LogFilter }. Filters run IN
|
|
96
|
+
* ORDER for this target; any returning null drops the entry for this target
|
|
97
|
+
* only. Because filters may MUTATE the entry, the dispatcher clones the entry
|
|
98
|
+
* per target before running them so mutation never bleeds across targets.
|
|
99
|
+
*/
|
|
100
|
+
filters?: ILogFilterOptions[];
|
|
41
101
|
}
|
|
42
102
|
export interface ILogOptions {
|
|
43
103
|
targets: ITargetsOption[];
|
|
44
104
|
rules: ILogRule[];
|
|
45
105
|
variables?: Record<string, unknown>;
|
|
106
|
+
/**
|
|
107
|
+
* Opt-in dedup filter that collapses identical repeated log entries. When set,
|
|
108
|
+
* every logger gets its OWN WhenRepeatedFilter instance ( independent state ).
|
|
109
|
+
* Default off.
|
|
110
|
+
*
|
|
111
|
+
* @deprecated prefer `filters: [{ type: "WhenRepeatedFilter", ... }]`. Kept
|
|
112
|
+
* for backward compat - when set it is mapped to a prepended WhenRepeatedFilter.
|
|
113
|
+
*/
|
|
114
|
+
whenRepeated?: IWhenRepeatedOptions;
|
|
115
|
+
/**
|
|
116
|
+
* Composable per-logger filter pipeline. Each entry is `{ type, ...opts }`
|
|
117
|
+
* where `type` is the DI string name of a {@link LogFilter } ( eg.
|
|
118
|
+
* "LevelFilter", "MatchFilter", "RateLimitFilter", "WhenRepeatedFilter" ).
|
|
119
|
+
* Filters run IN ORDER inside `write()`; any filter returning null drops the
|
|
120
|
+
* entry. Off ( empty ) by default.
|
|
121
|
+
*/
|
|
122
|
+
filters?: ILogFilterOptions[];
|
|
46
123
|
}
|
|
47
124
|
export interface ICommonTargetOptions {
|
|
48
125
|
/**
|
|
@@ -82,53 +159,91 @@ export interface IColoredConsoleTargetOptions extends ICommonTargetOptions {
|
|
|
82
159
|
export interface IFileTargetOptions extends ICommonTargetOptions {
|
|
83
160
|
options: {
|
|
84
161
|
/**
|
|
85
|
-
* path
|
|
162
|
+
* path where the active log is stored ( relative to the `fs` provider base
|
|
163
|
+
* path ). Variables are allowed to build the path eg. date / time etc.
|
|
86
164
|
*/
|
|
87
165
|
path: string;
|
|
88
166
|
/**
|
|
89
|
-
*
|
|
167
|
+
* Directory ( relative to the `archiveFs` provider base path ) rotated /
|
|
168
|
+
* archived files are stored in. Variables are allowed.
|
|
90
169
|
*
|
|
91
|
-
*
|
|
170
|
+
* When not set archives are stored in the same directory as the active log.
|
|
92
171
|
*/
|
|
93
172
|
archivePath: string;
|
|
94
173
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
174
|
+
* Name of the registered `@spinajs/fs` provider that stores the ACTIVE log
|
|
175
|
+
* file. Defaults to `fs-log-default` ( registered automatically, base path
|
|
176
|
+
* = process.cwd() ).
|
|
177
|
+
*/
|
|
178
|
+
fs?: string;
|
|
179
|
+
/**
|
|
180
|
+
* Name of the registered `@spinajs/fs` provider archives are moved to.
|
|
181
|
+
* Defaults to the same provider as `fs`.
|
|
182
|
+
*/
|
|
183
|
+
archiveFs?: string;
|
|
184
|
+
/**
|
|
185
|
+
* Class name of the LogArchiveStrategy that decides WHEN to rotate.
|
|
186
|
+
* Default is `SizeLogArchiveStrategy` ( interval size check ). Use
|
|
187
|
+
* `CronLogArchiveStrategy` together with `rotate` for scheduled rotation.
|
|
188
|
+
*/
|
|
189
|
+
archiveStrategy?: string;
|
|
190
|
+
/**
|
|
191
|
+
* List of LogRetentionStrategy class names applied in order after each
|
|
192
|
+
* rotation. Compose eg. count + age. Default is [`CountLogRetentionStrategy`].
|
|
193
|
+
*/
|
|
194
|
+
retentionStrategies?: string[];
|
|
195
|
+
/**
|
|
196
|
+
* Maximum active log file size in bytes. When exceeded the file is rotated
|
|
197
|
+
* to the archive by `SizeLogArchiveStrategy`. Default is 1mb.
|
|
98
198
|
*/
|
|
99
199
|
maxSize: number;
|
|
100
200
|
/**
|
|
101
|
-
*
|
|
201
|
+
* Compress ( zip ) the archived file when moved to the archive.
|
|
102
202
|
*
|
|
103
|
-
* Default is false
|
|
203
|
+
* Default is false.
|
|
104
204
|
*/
|
|
105
205
|
compress: boolean;
|
|
106
206
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
207
|
+
* Cron expression used by `CronLogArchiveStrategy` to rotate the log
|
|
208
|
+
* ( 6-field with seconds supported, eg. '0 0 1 * * *' = 1am daily ).
|
|
209
|
+
* Required when that strategy is selected.
|
|
110
210
|
*
|
|
111
|
-
* Default is not set
|
|
211
|
+
* Default is not set.
|
|
112
212
|
*/
|
|
113
213
|
rotate: string;
|
|
114
214
|
/**
|
|
115
|
-
* Max internal message buffer size before
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
* Set it big when logging very frequently to avoid disk writes
|
|
119
|
-
* Defaults to 100 messages
|
|
215
|
+
* Max internal message buffer size before writing to file. Higher means
|
|
216
|
+
* fewer disk writes. Defaults to 100 messages.
|
|
120
217
|
*/
|
|
121
218
|
maxBufferSize: number;
|
|
122
219
|
/**
|
|
123
|
-
*
|
|
124
|
-
*
|
|
220
|
+
* Hard cap on the number of buffered messages held in memory. When exceeded
|
|
221
|
+
* ( eg. the fs sink is down and appends keep failing so the batch is
|
|
222
|
+
* prepended back ) the OLDEST buffered messages are dropped so memory stays
|
|
223
|
+
* bounded. Defaults to 100000.
|
|
224
|
+
*/
|
|
225
|
+
maxQueueSize: number;
|
|
226
|
+
/**
|
|
227
|
+
* How many archive files to keep before deletion, used by
|
|
228
|
+
* `CountLogRetentionStrategy`. Oldest by modification time are deleted.
|
|
229
|
+
* Default is 5.
|
|
125
230
|
*/
|
|
126
231
|
maxArchiveFiles: number;
|
|
127
232
|
/**
|
|
128
|
-
*
|
|
129
|
-
* Default is
|
|
233
|
+
* Max archive age in seconds, used by `AgeLogRetentionStrategy`. Archives
|
|
234
|
+
* older than this are deleted. Default is 7 days.
|
|
235
|
+
*/
|
|
236
|
+
maxAge?: number;
|
|
237
|
+
/**
|
|
238
|
+
* Interval in seconds at which `SizeLogArchiveStrategy` checks whether the
|
|
239
|
+
* active log needs rotating. Default is 60 seconds.
|
|
130
240
|
*/
|
|
131
241
|
archiveInterval: number;
|
|
242
|
+
/**
|
|
243
|
+
* Periodic flush tick in milliseconds. A partially filled buffer is flushed
|
|
244
|
+
* at least this often so messages are not held indefinitely. Default 1000ms.
|
|
245
|
+
*/
|
|
246
|
+
flushInterval?: number;
|
|
132
247
|
};
|
|
133
248
|
}
|
|
134
249
|
export interface ILogStaticVariables {
|
|
@@ -149,12 +264,55 @@ export declare abstract class LogTarget<T extends ICommonTargetOptions> extends
|
|
|
149
264
|
Error: Error | null | unknown;
|
|
150
265
|
Options: T;
|
|
151
266
|
constructor(options: T);
|
|
267
|
+
/**
|
|
268
|
+
* Write ( accept ) a single log entry.
|
|
269
|
+
*
|
|
270
|
+
* ## Rejection contract
|
|
271
|
+
*
|
|
272
|
+
* `write()` MAY reject to signal that the entry was NOT accepted / delivered.
|
|
273
|
+
* Self-healing targets ( File / Loki / OTLP ) RESOLVE because they own their
|
|
274
|
+
* reliability ( they buffer, requeue and retry internally ); wrappers like
|
|
275
|
+
* {@link RetryingTarget} / {@link FallbackGroupTarget} act on a rejection for
|
|
276
|
+
* targets that surface failure ( console / custom / strict ). A resolved
|
|
277
|
+
* write means "accepted for delivery", not necessarily "durably delivered".
|
|
278
|
+
*/
|
|
152
279
|
abstract write(data: ILogEntry): void;
|
|
280
|
+
/**
|
|
281
|
+
* Drop-hook. Set by a wrapper ( eg. {@link FallbackGroupTarget} ) to receive
|
|
282
|
+
* entries this target GAVE UP on ( buffer overflow or a non-retryable delivery
|
|
283
|
+
* failure ), so a durable fallback can catch EXACTLY what was not delivered —
|
|
284
|
+
* no duplicates. `null` ( the default ) means nobody is listening and dropped
|
|
285
|
+
* entries are simply discarded, as before.
|
|
286
|
+
*/
|
|
287
|
+
OnDropped: ((entry: ILogEntry) => void) | null;
|
|
288
|
+
/** Flush any buffered entries to the underlying sink. Default no-op; buffered targets override. */
|
|
289
|
+
forceFlush(): Promise<void>;
|
|
153
290
|
}
|
|
154
291
|
export interface ILogTargetDesc {
|
|
155
292
|
instance: LogTarget<ICommonTargetOptions>;
|
|
156
293
|
options?: ITargetsOption;
|
|
294
|
+
/**
|
|
295
|
+
* Representative rule for this target ( the one with the LOWEST min level ).
|
|
296
|
+
* Kept for the "no target" error message and back-compat; actual dispatch uses
|
|
297
|
+
* {@link ranges }, not this rule's single level.
|
|
298
|
+
*/
|
|
157
299
|
rule: ILogRule;
|
|
300
|
+
/**
|
|
301
|
+
* Union of level WINDOWS routing to this target. Several rules can route to the
|
|
302
|
+
* same target with DIFFERENT `[level, maxLevel]` windows; dispatch tests
|
|
303
|
+
* membership in ANY of them. A plain min-only rule yields `[min, Security]`, so
|
|
304
|
+
* behavior is unchanged for existing configs.
|
|
305
|
+
*/
|
|
306
|
+
ranges: {
|
|
307
|
+
min: LogLevel;
|
|
308
|
+
max: LogLevel;
|
|
309
|
+
}[];
|
|
310
|
+
/**
|
|
311
|
+
* Resolved per-target filters ( from the target def's `filters` ), applied in
|
|
312
|
+
* `write()` after the logger-level pipeline, for THIS target only. `@NewInstance`
|
|
313
|
+
* so each logger's use of the target gets its own filter instances / state.
|
|
314
|
+
*/
|
|
315
|
+
filters?: LogFilter[];
|
|
158
316
|
}
|
|
159
317
|
export declare function createLogMessageObject(err: Error | string, message: string | any[], level: LogLevel, logger: string, variables: any, ...args: any[]): ILogEntry;
|
|
160
318
|
export declare abstract class Log extends SyncService {
|
|
@@ -168,6 +326,53 @@ export declare abstract class Log extends SyncService {
|
|
|
168
326
|
protected Rules: ILogRule[];
|
|
169
327
|
protected Container: Container;
|
|
170
328
|
protected Variables: Record<string, any>;
|
|
329
|
+
/**
|
|
330
|
+
* Lowest level any of this logger's targets accepts ( the MIN across its
|
|
331
|
+
* matched rules ). Set by FrameworkLogger.resolve(); default Trace = allow
|
|
332
|
+
* all. A call below this level would be dropped by every target anyway, so the
|
|
333
|
+
* per-method guard can safely short-circuit on it.
|
|
334
|
+
*/
|
|
335
|
+
protected MinLevel: LogLevel;
|
|
336
|
+
/**
|
|
337
|
+
* Runtime level override ( loglevel-style ). `null` means "no override, use
|
|
338
|
+
* MinLevel". Set via setLevel/enableAll/disableAll, cleared via resetLevel.
|
|
339
|
+
*/
|
|
340
|
+
protected LevelOverride: LogLevel | null;
|
|
341
|
+
/** Effective minimum level: the runtime override if set, otherwise MinLevel. */
|
|
342
|
+
getLevel(): LogLevel;
|
|
343
|
+
/** True when a call at `level` should be emitted given the effective level. */
|
|
344
|
+
protected isEnabled(level: LogLevel): boolean;
|
|
345
|
+
/**
|
|
346
|
+
* Set a runtime level override. Accepts a {@link LogLevel} or a level name.
|
|
347
|
+
* When `persist` ( default true ) the choice is stored so it survives a
|
|
348
|
+
* browser reload ( no-op on Node ).
|
|
349
|
+
*/
|
|
350
|
+
setLevel(level: LogLevel | keyof typeof StrToLogLevel, persist?: boolean): void;
|
|
351
|
+
/**
|
|
352
|
+
* Set the override ONLY if nothing is currently applied ( loglevel semantics:
|
|
353
|
+
* a default must never clobber a user's explicit / persisted choice ). Never
|
|
354
|
+
* persists.
|
|
355
|
+
*/
|
|
356
|
+
setDefaultLevel(level: LogLevel | keyof typeof StrToLogLevel): void;
|
|
357
|
+
/** Drop the runtime override ( back to MinLevel ) and clear any persisted value. */
|
|
358
|
+
resetLevel(): void;
|
|
359
|
+
/** Enable every level ( Trace and up ). */
|
|
360
|
+
enableAll(persist?: boolean): void;
|
|
361
|
+
/**
|
|
362
|
+
* Disable every level - even {@link LogLevel.Security} - by raising the
|
|
363
|
+
* override to {@link SILENT_LEVEL} ( one above Security ).
|
|
364
|
+
*/
|
|
365
|
+
disableAll(persist?: boolean): void;
|
|
366
|
+
/**
|
|
367
|
+
* Force-drain THIS logger's targets' buffers ( eg. File / Loki / OTLP batch
|
|
368
|
+
* queues ) so buffered entries are written out. Does NOT close / dispose the
|
|
369
|
+
* target - handle & timer teardown remains the DI container's job. Calling
|
|
370
|
+
* `forceFlush()` on a non-buffered target is a harmless no-op. Guarded so a
|
|
371
|
+
* logger that failed to resolve ( no `Targets` ) is a safe no-op.
|
|
372
|
+
*/
|
|
373
|
+
flush(): Promise<void>;
|
|
374
|
+
/** Flush every registered logger ( best-effort; never rejects ). */
|
|
375
|
+
static flushAll(): Promise<void>;
|
|
171
376
|
static clearLoggers(): Promise<Promise<void>[]>;
|
|
172
377
|
addVariable(name: string, value: unknown): void;
|
|
173
378
|
timeStart(name: string): void;
|
|
@@ -175,29 +380,59 @@ export declare abstract class Log extends SyncService {
|
|
|
175
380
|
child(name: string, variables?: LogVariables): Log;
|
|
176
381
|
abstract trace(message: string, ...args: any[]): void;
|
|
177
382
|
abstract trace(err: Error, message: string, ...args: any[]): void;
|
|
383
|
+
abstract trace(fields: object, message?: string, ...args: any[]): void;
|
|
178
384
|
abstract trace(err: Error | string, message: string | any[], ...args: any[]): void;
|
|
179
385
|
abstract debug(message: string, ...args: any[]): void;
|
|
180
386
|
abstract debug(err: Error, message: string, ...args: any[]): void;
|
|
387
|
+
abstract debug(fields: object, message?: string, ...args: any[]): void;
|
|
181
388
|
abstract debug(err: Error | string, message: string | any[], ...args: any[]): void;
|
|
182
389
|
abstract info(message: string, ...args: any[]): void;
|
|
183
390
|
abstract info(err: Error, message: string, ...args: any[]): void;
|
|
391
|
+
abstract info(fields: object, message?: string, ...args: any[]): void;
|
|
184
392
|
abstract info(err: Error | string, message: string | any[], ...args: any[]): void;
|
|
185
393
|
abstract warn(message: string, ...args: any[]): void;
|
|
186
394
|
abstract warn(err: Error, message: string, ...args: any[]): void;
|
|
395
|
+
abstract warn(fields: object, message?: string, ...args: any[]): void;
|
|
187
396
|
abstract warn(err: Error | string, message: string | any[], ...args: any[]): void;
|
|
188
397
|
abstract error(message: string, ...args: any[]): void;
|
|
189
398
|
abstract error(err: Error, message: string, ...args: any[]): void;
|
|
399
|
+
abstract error(fields: object, message?: string, ...args: any[]): void;
|
|
190
400
|
abstract error(err: Error | string, message: string | any[], ...args: any[]): void;
|
|
191
401
|
abstract fatal(message: string, ...args: any[]): void;
|
|
192
402
|
abstract fatal(err: Error, message: string, ...args: any[]): void;
|
|
403
|
+
abstract fatal(fields: object, message?: string, ...args: any[]): void;
|
|
193
404
|
abstract fatal(err: Error | string, message: string | any[], ...args: any[]): void;
|
|
194
405
|
abstract security(message: string, ...args: any[]): void;
|
|
195
406
|
abstract security(err: Error, message: string, ...args: any[]): void;
|
|
407
|
+
abstract security(fields: object, message?: string, ...args: any[]): void;
|
|
196
408
|
abstract security(err: Error | string, message: string | any[], ...args: any[]): void;
|
|
197
409
|
abstract success(message: string, ...args: any[]): void;
|
|
198
410
|
abstract success(err: Error, message: string, ...args: any[]): void;
|
|
411
|
+
abstract success(fields: object, message?: string, ...args: any[]): void;
|
|
199
412
|
abstract success(err: Error | string, message: string | any[], ...args: any[]): void;
|
|
200
413
|
abstract write(entry: ILogEntry): Promise<PromiseSettledResult<void>[]>;
|
|
414
|
+
/**
|
|
415
|
+
* Attach a sink to THIS logger AT RUNTIME ( bunyan `addStream` style ),
|
|
416
|
+
* without going through config. Returns the resolved target instance, or
|
|
417
|
+
* `undefined` when nothing was attached ( eg. `def.enabled === false` ).
|
|
418
|
+
*
|
|
419
|
+
* Default is a safe no-op ( returns `undefined` ) so `Log`-typed references
|
|
420
|
+
* and bootstrap proxies compile; {@link FrameworkLogger } overrides it with
|
|
421
|
+
* the real target-descriptor build + gate recompute.
|
|
422
|
+
*/
|
|
423
|
+
addTarget(_def: ITargetsOption, _opts?: {
|
|
424
|
+
level?: keyof typeof StrToLogLevel;
|
|
425
|
+
maxLevel?: keyof typeof StrToLogLevel;
|
|
426
|
+
filters?: ILogFilterOptions[];
|
|
427
|
+
}): LogTarget<ICommonTargetOptions> | undefined;
|
|
428
|
+
/**
|
|
429
|
+
* Detach a runtime sink by its target `name`, flushing its buffered entries
|
|
430
|
+
* first ( it is NOT disposed - the instance may be DI-owned / shared ).
|
|
431
|
+
* No-op when no target with that name is attached.
|
|
432
|
+
*
|
|
433
|
+
* Default resolves immediately; {@link FrameworkLogger } overrides it.
|
|
434
|
+
*/
|
|
435
|
+
removeTarget(_name: string): Promise<void>;
|
|
201
436
|
}
|
|
202
437
|
/**
|
|
203
438
|
* Creates ( if not exists ) new logger instance with given name and optional variables
|
|
@@ -206,4 +441,8 @@ export declare abstract class Log extends SyncService {
|
|
|
206
441
|
*/
|
|
207
442
|
export declare function Logger(name: string, variables?: Record<string, unknown>): (target: any, key: string) => any;
|
|
208
443
|
export type LogVariables = ILogStaticVariables & ILogVariable;
|
|
444
|
+
/**
|
|
445
|
+
* Registers the ambient log-context provider. See {@link logContextProvider}.
|
|
446
|
+
*/
|
|
447
|
+
export declare function setLogContextProvider(fn: () => Record<string, unknown>): void;
|
|
209
448
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/mjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAM,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|