@spinajs/log 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 +744 -0
- package/lib/cjs/archive/LogArchiveService.d.ts +75 -0
- package/lib/cjs/archive/LogArchiveService.d.ts.map +1 -0
- package/lib/cjs/archive/LogArchiveService.js +189 -0
- package/lib/cjs/archive/LogArchiveService.js.map +1 -0
- package/lib/cjs/archive/archive-strategy.d.ts +32 -0
- package/lib/cjs/archive/archive-strategy.d.ts.map +1 -0
- package/lib/cjs/archive/archive-strategy.js +43 -0
- package/lib/cjs/archive/archive-strategy.js.map +1 -0
- package/lib/cjs/archive/context.d.ts +50 -0
- package/lib/cjs/archive/context.d.ts.map +1 -0
- package/lib/cjs/archive/context.js +3 -0
- package/lib/cjs/archive/context.js.map +1 -0
- package/lib/cjs/archive/index.d.ts +10 -0
- package/lib/cjs/archive/index.d.ts.map +1 -0
- package/lib/cjs/archive/index.js +26 -0
- package/lib/cjs/archive/index.js.map +1 -0
- package/lib/cjs/archive/retention-strategy.d.ts +26 -0
- package/lib/cjs/archive/retention-strategy.d.ts.map +1 -0
- package/lib/cjs/archive/retention-strategy.js +42 -0
- package/lib/cjs/archive/retention-strategy.js.map +1 -0
- package/lib/cjs/archive/strategies/AgeLogRetentionStrategy.d.ts +10 -0
- package/lib/cjs/archive/strategies/AgeLogRetentionStrategy.d.ts.map +1 -0
- package/lib/cjs/archive/strategies/AgeLogRetentionStrategy.js +46 -0
- package/lib/cjs/archive/strategies/AgeLogRetentionStrategy.js.map +1 -0
- package/lib/cjs/archive/strategies/CountLogRetentionStrategy.d.ts +10 -0
- package/lib/cjs/archive/strategies/CountLogRetentionStrategy.d.ts.map +1 -0
- package/lib/cjs/archive/strategies/CountLogRetentionStrategy.js +42 -0
- package/lib/cjs/archive/strategies/CountLogRetentionStrategy.js.map +1 -0
- package/lib/cjs/archive/strategies/CronLogArchiveStrategy.d.ts +15 -0
- package/lib/cjs/archive/strategies/CronLogArchiveStrategy.d.ts.map +1 -0
- package/lib/cjs/archive/strategies/CronLogArchiveStrategy.js +52 -0
- package/lib/cjs/archive/strategies/CronLogArchiveStrategy.js.map +1 -0
- package/lib/cjs/archive/strategies/SizeLogArchiveStrategy.d.ts +18 -0
- package/lib/cjs/archive/strategies/SizeLogArchiveStrategy.d.ts.map +1 -0
- package/lib/cjs/archive/strategies/SizeLogArchiveStrategy.js +63 -0
- package/lib/cjs/archive/strategies/SizeLogArchiveStrategy.js.map +1 -0
- package/lib/cjs/archive/strategies/util.d.ts +28 -0
- package/lib/cjs/archive/strategies/util.d.ts.map +1 -0
- package/lib/cjs/archive/strategies/util.js +59 -0
- package/lib/cjs/archive/strategies/util.js.map +1 -0
- package/lib/cjs/bootstrap.d.ts.map +1 -1
- package/lib/cjs/bootstrap.js +24 -1
- package/lib/cjs/bootstrap.js.map +1 -1
- package/lib/cjs/callsite.d.ts +26 -0
- package/lib/cjs/callsite.d.ts.map +1 -0
- package/lib/cjs/callsite.js +60 -0
- package/lib/cjs/callsite.js.map +1 -0
- package/lib/cjs/config/log.d.ts +96 -0
- package/lib/cjs/config/log.d.ts.map +1 -0
- package/lib/cjs/config/log.js +75 -0
- package/lib/cjs/config/log.js.map +1 -0
- package/lib/cjs/context.browser.d.ts +46 -0
- package/lib/cjs/context.browser.d.ts.map +1 -0
- package/lib/cjs/context.browser.js +85 -0
- package/lib/cjs/context.browser.js.map +1 -0
- package/lib/cjs/context.d.ts +61 -0
- package/lib/cjs/context.d.ts.map +1 -0
- package/lib/cjs/context.js +92 -0
- package/lib/cjs/context.js.map +1 -0
- package/lib/cjs/filters/LevelFilter.d.ts +24 -0
- package/lib/cjs/filters/LevelFilter.d.ts.map +1 -0
- package/lib/cjs/filters/LevelFilter.js +39 -0
- package/lib/cjs/filters/LevelFilter.js.map +1 -0
- package/lib/cjs/filters/MatchFilter.d.ts +30 -0
- package/lib/cjs/filters/MatchFilter.d.ts.map +1 -0
- package/lib/cjs/filters/MatchFilter.js +65 -0
- package/lib/cjs/filters/MatchFilter.js.map +1 -0
- package/lib/cjs/filters/RateLimitFilter.d.ts +37 -0
- package/lib/cjs/filters/RateLimitFilter.d.ts.map +1 -0
- package/lib/cjs/filters/RateLimitFilter.js +70 -0
- package/lib/cjs/filters/RateLimitFilter.js.map +1 -0
- package/lib/cjs/filters/index.d.ts +4 -0
- package/lib/cjs/filters/index.d.ts.map +1 -0
- package/lib/cjs/filters/index.js +20 -0
- package/lib/cjs/filters/index.js.map +1 -0
- package/lib/cjs/index.browser.d.ts +14 -0
- package/lib/cjs/index.browser.d.ts.map +1 -0
- package/lib/cjs/index.browser.js +46 -0
- package/lib/cjs/index.browser.js.map +1 -0
- package/lib/cjs/index.d.ts +8 -0
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +8 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/log.d.ts +60 -1
- package/lib/cjs/log.d.ts.map +1 -1
- package/lib/cjs/log.js +294 -32
- package/lib/cjs/log.js.map +1 -1
- package/lib/cjs/perf/LogMetricSink.d.ts +28 -0
- package/lib/cjs/perf/LogMetricSink.d.ts.map +1 -0
- package/lib/cjs/perf/LogMetricSink.js +120 -0
- package/lib/cjs/perf/LogMetricSink.js.map +1 -0
- package/lib/cjs/perf/measure.d.ts +9 -0
- package/lib/cjs/perf/measure.d.ts.map +1 -0
- package/lib/cjs/perf/measure.js +21 -0
- package/lib/cjs/perf/measure.js.map +1 -0
- package/lib/cjs/perf.d.ts +9 -0
- package/lib/cjs/perf.d.ts.map +1 -0
- package/lib/cjs/perf.js +18 -0
- package/lib/cjs/perf.js.map +1 -0
- package/lib/cjs/schemas/log.configuration.d.ts +151 -18
- package/lib/cjs/schemas/log.configuration.d.ts.map +1 -1
- package/lib/cjs/schemas/log.configuration.js +154 -21
- package/lib/cjs/schemas/log.configuration.js.map +1 -1
- package/lib/cjs/targets/BrowserConsoleTarget.d.ts +48 -0
- package/lib/cjs/targets/BrowserConsoleTarget.d.ts.map +1 -0
- package/lib/cjs/targets/BrowserConsoleTarget.js +48 -0
- package/lib/cjs/targets/BrowserConsoleTarget.js.map +1 -0
- package/lib/cjs/targets/ColoredConsoleTarget.d.ts.map +1 -1
- package/lib/cjs/targets/ColoredConsoleTarget.js +21 -12
- package/lib/cjs/targets/ColoredConsoleTarget.js.map +1 -1
- package/lib/cjs/targets/FileTarget.d.ts +96 -20
- package/lib/cjs/targets/FileTarget.d.ts.map +1 -1
- package/lib/cjs/targets/FileTarget.js +188 -225
- package/lib/cjs/targets/FileTarget.js.map +1 -1
- package/lib/cjs/targets/JsonFileTarget.d.ts +19 -0
- package/lib/cjs/targets/JsonFileTarget.d.ts.map +1 -0
- package/lib/cjs/targets/JsonFileTarget.js +44 -0
- package/lib/cjs/targets/JsonFileTarget.js.map +1 -0
- package/lib/cjs/targets/JsonTarget.d.ts +27 -0
- package/lib/cjs/targets/JsonTarget.d.ts.map +1 -0
- package/lib/cjs/targets/JsonTarget.js +46 -0
- package/lib/cjs/targets/JsonTarget.js.map +1 -0
- package/lib/cjs/targets/MemoryTarget.d.ts +33 -0
- package/lib/cjs/targets/MemoryTarget.d.ts.map +1 -0
- package/lib/cjs/targets/MemoryTarget.js +63 -0
- package/lib/cjs/targets/MemoryTarget.js.map +1 -0
- package/lib/cjs/targets/index.d.ts +7 -0
- package/lib/cjs/targets/index.d.ts.map +1 -1
- package/lib/cjs/targets/index.js +7 -0
- package/lib/cjs/targets/index.js.map +1 -1
- package/lib/cjs/targets/wrappers/AutoFlushTarget.d.ts +37 -0
- package/lib/cjs/targets/wrappers/AutoFlushTarget.d.ts.map +1 -0
- package/lib/cjs/targets/wrappers/AutoFlushTarget.js +48 -0
- package/lib/cjs/targets/wrappers/AutoFlushTarget.js.map +1 -0
- package/lib/cjs/targets/wrappers/FallbackGroupTarget.d.ts +45 -0
- package/lib/cjs/targets/wrappers/FallbackGroupTarget.d.ts.map +1 -0
- package/lib/cjs/targets/wrappers/FallbackGroupTarget.js +94 -0
- package/lib/cjs/targets/wrappers/FallbackGroupTarget.js.map +1 -0
- package/lib/cjs/targets/wrappers/RetryingTarget.d.ts +44 -0
- package/lib/cjs/targets/wrappers/RetryingTarget.d.ts.map +1 -0
- package/lib/cjs/targets/wrappers/RetryingTarget.js +61 -0
- package/lib/cjs/targets/wrappers/RetryingTarget.js.map +1 -0
- package/lib/cjs/targets/wrappers/SplitGroupTarget.d.ts +30 -0
- package/lib/cjs/targets/wrappers/SplitGroupTarget.d.ts.map +1 -0
- package/lib/cjs/targets/wrappers/SplitGroupTarget.js +52 -0
- package/lib/cjs/targets/wrappers/SplitGroupTarget.js.map +1 -0
- package/lib/cjs/traceparent.d.ts +63 -0
- package/lib/cjs/traceparent.d.ts.map +1 -0
- package/lib/cjs/traceparent.js +107 -0
- package/lib/cjs/traceparent.js.map +1 -0
- package/lib/mjs/archive/LogArchiveService.d.ts +75 -0
- package/lib/mjs/archive/LogArchiveService.d.ts.map +1 -0
- package/lib/mjs/archive/LogArchiveService.js +186 -0
- package/lib/mjs/archive/LogArchiveService.js.map +1 -0
- package/lib/mjs/archive/archive-strategy.d.ts +32 -0
- package/lib/mjs/archive/archive-strategy.d.ts.map +1 -0
- package/lib/mjs/archive/archive-strategy.js +39 -0
- package/lib/mjs/archive/archive-strategy.js.map +1 -0
- package/lib/mjs/archive/context.d.ts +50 -0
- package/lib/mjs/archive/context.d.ts.map +1 -0
- package/lib/mjs/archive/context.js +2 -0
- package/lib/mjs/archive/context.js.map +1 -0
- package/lib/mjs/archive/index.d.ts +10 -0
- package/lib/mjs/archive/index.d.ts.map +1 -0
- package/lib/mjs/archive/index.js +10 -0
- package/lib/mjs/archive/index.js.map +1 -0
- package/lib/mjs/archive/retention-strategy.d.ts +26 -0
- package/lib/mjs/archive/retention-strategy.d.ts.map +1 -0
- package/lib/mjs/archive/retention-strategy.js +38 -0
- package/lib/mjs/archive/retention-strategy.js.map +1 -0
- package/lib/mjs/archive/strategies/AgeLogRetentionStrategy.d.ts +10 -0
- package/lib/mjs/archive/strategies/AgeLogRetentionStrategy.d.ts.map +1 -0
- package/lib/mjs/archive/strategies/AgeLogRetentionStrategy.js +43 -0
- package/lib/mjs/archive/strategies/AgeLogRetentionStrategy.js.map +1 -0
- package/lib/mjs/archive/strategies/CountLogRetentionStrategy.d.ts +10 -0
- package/lib/mjs/archive/strategies/CountLogRetentionStrategy.d.ts.map +1 -0
- package/lib/mjs/archive/strategies/CountLogRetentionStrategy.js +39 -0
- package/lib/mjs/archive/strategies/CountLogRetentionStrategy.js.map +1 -0
- package/lib/mjs/archive/strategies/CronLogArchiveStrategy.d.ts +15 -0
- package/lib/mjs/archive/strategies/CronLogArchiveStrategy.d.ts.map +1 -0
- package/lib/mjs/archive/strategies/CronLogArchiveStrategy.js +49 -0
- package/lib/mjs/archive/strategies/CronLogArchiveStrategy.js.map +1 -0
- package/lib/mjs/archive/strategies/SizeLogArchiveStrategy.d.ts +18 -0
- package/lib/mjs/archive/strategies/SizeLogArchiveStrategy.d.ts.map +1 -0
- package/lib/mjs/archive/strategies/SizeLogArchiveStrategy.js +60 -0
- package/lib/mjs/archive/strategies/SizeLogArchiveStrategy.js.map +1 -0
- package/lib/mjs/archive/strategies/util.d.ts +28 -0
- package/lib/mjs/archive/strategies/util.d.ts.map +1 -0
- package/lib/mjs/archive/strategies/util.js +54 -0
- package/lib/mjs/archive/strategies/util.js.map +1 -0
- package/lib/mjs/bootstrap.d.ts.map +1 -1
- package/lib/mjs/bootstrap.js +25 -2
- package/lib/mjs/bootstrap.js.map +1 -1
- package/lib/mjs/callsite.d.ts +26 -0
- package/lib/mjs/callsite.d.ts.map +1 -0
- package/lib/mjs/callsite.js +57 -0
- package/lib/mjs/callsite.js.map +1 -0
- package/lib/mjs/config/log.d.ts +96 -0
- package/lib/mjs/config/log.d.ts.map +1 -0
- package/lib/mjs/config/log.js +72 -0
- package/lib/mjs/config/log.js.map +1 -0
- package/lib/mjs/context.browser.d.ts +46 -0
- package/lib/mjs/context.browser.d.ts.map +1 -0
- package/lib/mjs/context.browser.js +81 -0
- package/lib/mjs/context.browser.js.map +1 -0
- package/lib/mjs/context.d.ts +61 -0
- package/lib/mjs/context.d.ts.map +1 -0
- package/lib/mjs/context.js +88 -0
- package/lib/mjs/context.js.map +1 -0
- package/lib/mjs/filters/LevelFilter.d.ts +24 -0
- package/lib/mjs/filters/LevelFilter.d.ts.map +1 -0
- package/lib/mjs/filters/LevelFilter.js +36 -0
- package/lib/mjs/filters/LevelFilter.js.map +1 -0
- package/lib/mjs/filters/MatchFilter.d.ts +30 -0
- package/lib/mjs/filters/MatchFilter.d.ts.map +1 -0
- package/lib/mjs/filters/MatchFilter.js +62 -0
- package/lib/mjs/filters/MatchFilter.js.map +1 -0
- package/lib/mjs/filters/RateLimitFilter.d.ts +37 -0
- package/lib/mjs/filters/RateLimitFilter.d.ts.map +1 -0
- package/lib/mjs/filters/RateLimitFilter.js +67 -0
- package/lib/mjs/filters/RateLimitFilter.js.map +1 -0
- package/lib/mjs/filters/index.d.ts +4 -0
- package/lib/mjs/filters/index.d.ts.map +1 -0
- package/lib/mjs/filters/index.js +4 -0
- package/lib/mjs/filters/index.js.map +1 -0
- package/lib/mjs/index.browser.d.ts +14 -0
- package/lib/mjs/index.browser.d.ts.map +1 -0
- package/lib/mjs/index.browser.js +30 -0
- package/lib/mjs/index.browser.js.map +1 -0
- package/lib/mjs/index.d.ts +8 -0
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +8 -0
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/log.d.ts +60 -1
- package/lib/mjs/log.d.ts.map +1 -1
- package/lib/mjs/log.js +295 -33
- package/lib/mjs/log.js.map +1 -1
- package/lib/mjs/perf/LogMetricSink.d.ts +28 -0
- package/lib/mjs/perf/LogMetricSink.d.ts.map +1 -0
- package/lib/mjs/perf/LogMetricSink.js +117 -0
- package/lib/mjs/perf/LogMetricSink.js.map +1 -0
- package/lib/mjs/perf/measure.d.ts +9 -0
- package/lib/mjs/perf/measure.d.ts.map +1 -0
- package/lib/mjs/perf/measure.js +18 -0
- package/lib/mjs/perf/measure.js.map +1 -0
- package/lib/mjs/perf.d.ts +9 -0
- package/lib/mjs/perf.d.ts.map +1 -0
- package/lib/mjs/perf.js +15 -0
- package/lib/mjs/perf.js.map +1 -0
- package/lib/mjs/schemas/log.configuration.d.ts +151 -18
- package/lib/mjs/schemas/log.configuration.d.ts.map +1 -1
- package/lib/mjs/schemas/log.configuration.js +154 -21
- package/lib/mjs/schemas/log.configuration.js.map +1 -1
- package/lib/mjs/targets/BrowserConsoleTarget.d.ts +48 -0
- package/lib/mjs/targets/BrowserConsoleTarget.d.ts.map +1 -0
- package/lib/mjs/targets/BrowserConsoleTarget.js +45 -0
- package/lib/mjs/targets/BrowserConsoleTarget.js.map +1 -0
- package/lib/mjs/targets/ColoredConsoleTarget.d.ts.map +1 -1
- package/lib/mjs/targets/ColoredConsoleTarget.js +21 -9
- package/lib/mjs/targets/ColoredConsoleTarget.js.map +1 -1
- package/lib/mjs/targets/FileTarget.d.ts +96 -20
- package/lib/mjs/targets/FileTarget.d.ts.map +1 -1
- package/lib/mjs/targets/FileTarget.js +191 -192
- package/lib/mjs/targets/FileTarget.js.map +1 -1
- package/lib/mjs/targets/JsonFileTarget.d.ts +19 -0
- package/lib/mjs/targets/JsonFileTarget.d.ts.map +1 -0
- package/lib/mjs/targets/JsonFileTarget.js +41 -0
- package/lib/mjs/targets/JsonFileTarget.js.map +1 -0
- package/lib/mjs/targets/JsonTarget.d.ts +27 -0
- package/lib/mjs/targets/JsonTarget.d.ts.map +1 -0
- package/lib/mjs/targets/JsonTarget.js +43 -0
- package/lib/mjs/targets/JsonTarget.js.map +1 -0
- package/lib/mjs/targets/MemoryTarget.d.ts +33 -0
- package/lib/mjs/targets/MemoryTarget.d.ts.map +1 -0
- package/lib/mjs/targets/MemoryTarget.js +60 -0
- package/lib/mjs/targets/MemoryTarget.js.map +1 -0
- package/lib/mjs/targets/index.d.ts +7 -0
- package/lib/mjs/targets/index.d.ts.map +1 -1
- package/lib/mjs/targets/index.js +7 -0
- package/lib/mjs/targets/index.js.map +1 -1
- package/lib/mjs/targets/wrappers/AutoFlushTarget.d.ts +37 -0
- package/lib/mjs/targets/wrappers/AutoFlushTarget.d.ts.map +1 -0
- package/lib/mjs/targets/wrappers/AutoFlushTarget.js +45 -0
- package/lib/mjs/targets/wrappers/AutoFlushTarget.js.map +1 -0
- package/lib/mjs/targets/wrappers/FallbackGroupTarget.d.ts +45 -0
- package/lib/mjs/targets/wrappers/FallbackGroupTarget.d.ts.map +1 -0
- package/lib/mjs/targets/wrappers/FallbackGroupTarget.js +91 -0
- package/lib/mjs/targets/wrappers/FallbackGroupTarget.js.map +1 -0
- package/lib/mjs/targets/wrappers/RetryingTarget.d.ts +44 -0
- package/lib/mjs/targets/wrappers/RetryingTarget.d.ts.map +1 -0
- package/lib/mjs/targets/wrappers/RetryingTarget.js +58 -0
- package/lib/mjs/targets/wrappers/RetryingTarget.js.map +1 -0
- package/lib/mjs/targets/wrappers/SplitGroupTarget.d.ts +30 -0
- package/lib/mjs/targets/wrappers/SplitGroupTarget.d.ts.map +1 -0
- package/lib/mjs/targets/wrappers/SplitGroupTarget.js +49 -0
- package/lib/mjs/targets/wrappers/SplitGroupTarget.js.map +1 -0
- package/lib/mjs/traceparent.d.ts +63 -0
- package/lib/mjs/traceparent.d.ts.map +1 -0
- package/lib/mjs/traceparent.js +100 -0
- package/lib/mjs/traceparent.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +25 -15
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Perf } from "@spinajs/log-common";
|
|
2
|
+
/**
|
|
3
|
+
* Method decorator that times the wrapped method via {@link Perf.measure}. Name
|
|
4
|
+
* defaults to `${ClassName}.${method}`. Works for sync and async methods ( the
|
|
5
|
+
* facade awaits a returned thenable ). Uses the same legacy-decorator signature
|
|
6
|
+
* as the rest of the framework ( `experimentalDecorators` ).
|
|
7
|
+
*/
|
|
8
|
+
export function Measure(name, opts) {
|
|
9
|
+
return function (target, propertyKey, descriptor) {
|
|
10
|
+
const original = descriptor.value;
|
|
11
|
+
const metricName = name ?? `${target.constructor.name}.${String(propertyKey)}`;
|
|
12
|
+
descriptor.value = function (...args) {
|
|
13
|
+
return Perf.measure(metricName, () => original.apply(this, args), opts);
|
|
14
|
+
};
|
|
15
|
+
return descriptor;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=measure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure.js","sourceRoot":"","sources":["../../../src/perf/measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,qBAAqB,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,IAAa,EAAE,IAAmB;IACxD,OAAO,UAAU,MAAc,EAAE,WAA4B,EAAE,UAA8B;QAC3F,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAwC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAI,IAAI,GAAI,MAA4C,CAAC,WAAW,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACtH,UAAU,CAAC,KAAK,GAAG,UAAyB,GAAG,IAAe;YAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Install the per-request perf-scope backend for the node runtime. Reads the
|
|
3
|
+
* `perf` accumulator off the ambient async store ( which IS `req.storage` when
|
|
4
|
+
* http runs an action, so the scope created by the http PerfRollup middleware
|
|
5
|
+
* and mutated during the action is one and the same object ). Called from
|
|
6
|
+
* {@link LogBotstrapper.bootstrap}.
|
|
7
|
+
*/
|
|
8
|
+
export declare function wirePerfScope(): void;
|
|
9
|
+
//# sourceMappingURL=perf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perf.d.ts","sourceRoot":"","sources":["../../src/perf.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAIpC"}
|
package/lib/mjs/perf.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { setPerfScopeBackend } from "@spinajs/log-common";
|
|
2
|
+
import { LogContext } from "./context.js";
|
|
3
|
+
/**
|
|
4
|
+
* Install the per-request perf-scope backend for the node runtime. Reads the
|
|
5
|
+
* `perf` accumulator off the ambient async store ( which IS `req.storage` when
|
|
6
|
+
* http runs an action, so the scope created by the http PerfRollup middleware
|
|
7
|
+
* and mutated during the action is one and the same object ). Called from
|
|
8
|
+
* {@link LogBotstrapper.bootstrap}.
|
|
9
|
+
*/
|
|
10
|
+
export function wirePerfScope() {
|
|
11
|
+
setPerfScopeBackend({
|
|
12
|
+
get: () => LogContext.active().perf ?? null,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=perf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perf.js","sourceRoot":"","sources":["../../src/perf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAc,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC3B,mBAAmB,CAAC;QAClB,GAAG,EAAE,GAAG,EAAE,CAAE,UAAU,CAAC,MAAM,EAAE,CAAC,IAA+B,IAAI,IAAI;KACxE,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -24,29 +24,153 @@ declare const CONFIGURATION_SCHEMA: {
|
|
|
24
24
|
enabled: {
|
|
25
25
|
type: string;
|
|
26
26
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
};
|
|
30
|
-
archivePath: {
|
|
31
|
-
type: string;
|
|
32
|
-
};
|
|
33
|
-
maxSize: {
|
|
34
|
-
type: string;
|
|
35
|
-
minimum: number;
|
|
36
|
-
};
|
|
37
|
-
compress: {
|
|
38
|
-
type: string;
|
|
39
|
-
};
|
|
40
|
-
rotate: {
|
|
27
|
+
filters: {
|
|
28
|
+
description: string;
|
|
41
29
|
type: string;
|
|
30
|
+
items: {
|
|
31
|
+
type: string;
|
|
32
|
+
properties: {
|
|
33
|
+
type: {
|
|
34
|
+
description: string;
|
|
35
|
+
type: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
required: string[];
|
|
39
|
+
};
|
|
42
40
|
};
|
|
43
|
-
|
|
41
|
+
options: {
|
|
44
42
|
type: string;
|
|
45
|
-
|
|
43
|
+
properties: {
|
|
44
|
+
path: {
|
|
45
|
+
description: string;
|
|
46
|
+
type: string;
|
|
47
|
+
};
|
|
48
|
+
archivePath: {
|
|
49
|
+
description: string;
|
|
50
|
+
type: string;
|
|
51
|
+
};
|
|
52
|
+
fs: {
|
|
53
|
+
description: string;
|
|
54
|
+
type: string;
|
|
55
|
+
};
|
|
56
|
+
archiveFs: {
|
|
57
|
+
description: string;
|
|
58
|
+
type: string;
|
|
59
|
+
};
|
|
60
|
+
archiveStrategy: {
|
|
61
|
+
description: string;
|
|
62
|
+
type: string;
|
|
63
|
+
};
|
|
64
|
+
retentionStrategies: {
|
|
65
|
+
description: string;
|
|
66
|
+
type: string;
|
|
67
|
+
items: {
|
|
68
|
+
type: string;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
maxSize: {
|
|
72
|
+
description: string;
|
|
73
|
+
type: string;
|
|
74
|
+
minimum: number;
|
|
75
|
+
};
|
|
76
|
+
compress: {
|
|
77
|
+
description: string;
|
|
78
|
+
type: string;
|
|
79
|
+
};
|
|
80
|
+
rotate: {
|
|
81
|
+
description: string;
|
|
82
|
+
type: string;
|
|
83
|
+
};
|
|
84
|
+
maxBufferSize: {
|
|
85
|
+
description: string;
|
|
86
|
+
type: string;
|
|
87
|
+
minimum: number;
|
|
88
|
+
};
|
|
89
|
+
maxQueueSize: {
|
|
90
|
+
description: string;
|
|
91
|
+
type: string;
|
|
92
|
+
minimum: number;
|
|
93
|
+
};
|
|
94
|
+
maxArchiveFiles: {
|
|
95
|
+
description: string;
|
|
96
|
+
type: string;
|
|
97
|
+
minimum: number;
|
|
98
|
+
};
|
|
99
|
+
maxAge: {
|
|
100
|
+
description: string;
|
|
101
|
+
type: string;
|
|
102
|
+
minimum: number;
|
|
103
|
+
};
|
|
104
|
+
archiveInterval: {
|
|
105
|
+
description: string;
|
|
106
|
+
type: string;
|
|
107
|
+
minimum: number;
|
|
108
|
+
};
|
|
109
|
+
flushInterval: {
|
|
110
|
+
description: string;
|
|
111
|
+
type: string;
|
|
112
|
+
minimum: number;
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
required: string[];
|
|
46
116
|
};
|
|
47
|
-
|
|
117
|
+
};
|
|
118
|
+
required: string[];
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
file: {
|
|
122
|
+
description: string;
|
|
123
|
+
type: string;
|
|
124
|
+
};
|
|
125
|
+
perf: {
|
|
126
|
+
description: string;
|
|
127
|
+
type: string;
|
|
128
|
+
properties: {
|
|
129
|
+
enabled: {
|
|
130
|
+
type: string;
|
|
131
|
+
};
|
|
132
|
+
thresholds: {
|
|
133
|
+
description: string;
|
|
134
|
+
type: string;
|
|
135
|
+
};
|
|
136
|
+
overThresholdLevel: {
|
|
137
|
+
type: string;
|
|
138
|
+
enum: string[];
|
|
139
|
+
};
|
|
140
|
+
underThresholdLevel: {
|
|
141
|
+
type: string;
|
|
142
|
+
enum: string[];
|
|
143
|
+
};
|
|
144
|
+
logCounters: {
|
|
145
|
+
type: string;
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
whenRepeated: {
|
|
150
|
+
description: string;
|
|
151
|
+
type: string;
|
|
152
|
+
properties: {
|
|
153
|
+
timeout: {
|
|
154
|
+
description: string;
|
|
155
|
+
type: string;
|
|
156
|
+
minimum: number;
|
|
157
|
+
};
|
|
158
|
+
maxKeys: {
|
|
159
|
+
description: string;
|
|
160
|
+
type: string;
|
|
161
|
+
minimum: number;
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
filters: {
|
|
166
|
+
description: string;
|
|
167
|
+
type: string;
|
|
168
|
+
items: {
|
|
169
|
+
type: string;
|
|
170
|
+
properties: {
|
|
171
|
+
type: {
|
|
172
|
+
description: string;
|
|
48
173
|
type: string;
|
|
49
|
-
minimum: number;
|
|
50
174
|
};
|
|
51
175
|
};
|
|
52
176
|
required: string[];
|
|
@@ -67,6 +191,11 @@ declare const CONFIGURATION_SCHEMA: {
|
|
|
67
191
|
type: string;
|
|
68
192
|
enum: string[];
|
|
69
193
|
};
|
|
194
|
+
maxLevel: {
|
|
195
|
+
description: string;
|
|
196
|
+
type: string;
|
|
197
|
+
enum: string[];
|
|
198
|
+
};
|
|
70
199
|
target: {
|
|
71
200
|
oneOf: ({
|
|
72
201
|
type: string;
|
|
@@ -78,6 +207,10 @@ declare const CONFIGURATION_SCHEMA: {
|
|
|
78
207
|
};
|
|
79
208
|
})[];
|
|
80
209
|
};
|
|
210
|
+
final: {
|
|
211
|
+
description: string;
|
|
212
|
+
type: string;
|
|
213
|
+
};
|
|
81
214
|
};
|
|
82
215
|
required: string[];
|
|
83
216
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.configuration.d.ts","sourceRoot":"","sources":["../../../src/schemas/log.configuration.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"log.configuration.d.ts","sourceRoot":"","sources":["../../../src/schemas/log.configuration.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0PzB,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -24,32 +24,147 @@ const CONFIGURATION_SCHEMA = {
|
|
|
24
24
|
enabled: {
|
|
25
25
|
type: "boolean",
|
|
26
26
|
},
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
filters: {
|
|
28
|
+
description: "Per-target filter pipeline, applied only when writing to THIS target ( after the logger-level filters ). Each item is { type, ...opts } where `type` is the DI name of a LogFilter. Any returning null drops the entry for this target only.",
|
|
29
|
+
type: "array",
|
|
30
|
+
items: {
|
|
31
|
+
type: "object",
|
|
32
|
+
properties: {
|
|
33
|
+
type: {
|
|
34
|
+
description: "DI string name of the registered LogFilter.",
|
|
35
|
+
type: "string",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
required: ["type"],
|
|
39
|
+
},
|
|
36
40
|
},
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
// FileTarget options ( nested under `options` )
|
|
42
|
+
options: {
|
|
43
|
+
type: "object",
|
|
44
|
+
properties: {
|
|
45
|
+
path: {
|
|
46
|
+
description: "Active log path, relative to the `fs` provider base path. Variables allowed.",
|
|
47
|
+
type: "string",
|
|
48
|
+
},
|
|
49
|
+
archivePath: {
|
|
50
|
+
description: "Archive directory, relative to the `archiveFs` provider base path. Variables allowed.",
|
|
51
|
+
type: "string",
|
|
52
|
+
},
|
|
53
|
+
fs: {
|
|
54
|
+
description: "Registered @spinajs/fs provider for the active log. Defaults to 'fs-log-default'.",
|
|
55
|
+
type: "string",
|
|
56
|
+
},
|
|
57
|
+
archiveFs: {
|
|
58
|
+
description: "Registered @spinajs/fs provider archives are moved to. Defaults to `fs`.",
|
|
59
|
+
type: "string",
|
|
60
|
+
},
|
|
61
|
+
archiveStrategy: {
|
|
62
|
+
description: "LogArchiveStrategy class name deciding WHEN to rotate. Default 'SizeLogArchiveStrategy'.",
|
|
63
|
+
type: "string",
|
|
64
|
+
},
|
|
65
|
+
retentionStrategies: {
|
|
66
|
+
description: "LogRetentionStrategy class names applied in order after rotation. Default ['CountLogRetentionStrategy'].",
|
|
67
|
+
type: "array",
|
|
68
|
+
items: {
|
|
69
|
+
type: "string",
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
maxSize: {
|
|
73
|
+
description: "Max active log size in bytes before rotation.",
|
|
74
|
+
type: "integer",
|
|
75
|
+
minimum: 1,
|
|
76
|
+
},
|
|
77
|
+
compress: {
|
|
78
|
+
description: "Zip the archived file when moved to the archive.",
|
|
79
|
+
type: "boolean",
|
|
80
|
+
},
|
|
81
|
+
rotate: {
|
|
82
|
+
description: "Cron expression for CronLogArchiveStrategy ( 6-field with seconds ).",
|
|
83
|
+
type: "string",
|
|
84
|
+
},
|
|
85
|
+
maxBufferSize: {
|
|
86
|
+
description: "Max buffered messages before a flush.",
|
|
87
|
+
type: "integer",
|
|
88
|
+
minimum: 1,
|
|
89
|
+
},
|
|
90
|
+
maxQueueSize: {
|
|
91
|
+
description: "Hard cap on buffered messages; oldest are dropped past this so a down sink cannot OOM.",
|
|
92
|
+
type: "integer",
|
|
93
|
+
minimum: 1,
|
|
94
|
+
},
|
|
95
|
+
maxArchiveFiles: {
|
|
96
|
+
description: "How many archives to keep ( CountLogRetentionStrategy ). Oldest are deleted.",
|
|
97
|
+
type: "integer",
|
|
98
|
+
minimum: 1,
|
|
99
|
+
},
|
|
100
|
+
maxAge: {
|
|
101
|
+
description: "Max archive age in seconds ( AgeLogRetentionStrategy ).",
|
|
102
|
+
type: "integer",
|
|
103
|
+
minimum: 1,
|
|
104
|
+
},
|
|
105
|
+
archiveInterval: {
|
|
106
|
+
description: "Interval in seconds SizeLogArchiveStrategy checks the active log size.",
|
|
107
|
+
type: "integer",
|
|
108
|
+
minimum: 1,
|
|
109
|
+
},
|
|
110
|
+
flushInterval: {
|
|
111
|
+
description: "Periodic flush tick in milliseconds for a partially filled buffer.",
|
|
112
|
+
type: "integer",
|
|
113
|
+
minimum: 1,
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
required: ["path"],
|
|
39
117
|
},
|
|
40
|
-
|
|
118
|
+
},
|
|
119
|
+
required: ["name", "type"],
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
file: {
|
|
123
|
+
description: "Default FileTarget options ( buffer / rotation / retention tunables ) merged UNDER every file target's own `options`. Shipped by @spinajs/log ( see logger.file defaults ) and overridable by user config.",
|
|
124
|
+
type: "object",
|
|
125
|
+
},
|
|
126
|
+
perf: {
|
|
127
|
+
description: "Performance-instrumentation ( Perf facade ) options for the default LogMetricSink.",
|
|
128
|
+
type: "object",
|
|
129
|
+
properties: {
|
|
130
|
+
enabled: { type: "boolean" },
|
|
131
|
+
thresholds: {
|
|
132
|
+
description: "Per-metric-name slow threshold in ms. A name not present falls back to `default`; 0 means never slow.",
|
|
133
|
+
type: "object",
|
|
134
|
+
},
|
|
135
|
+
overThresholdLevel: { type: "string", enum: ["trace", "debug", "info", "warn", "error"] },
|
|
136
|
+
underThresholdLevel: { type: "string", enum: ["trace", "debug", "info", "warn", "error"] },
|
|
137
|
+
logCounters: { type: "boolean" },
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
whenRepeated: {
|
|
141
|
+
description: "Opt-in dedup filter. Collapses identical repeated log entries within a timeout window into one, emitting a (xN) count when logging resumes. Off when absent; global for now.",
|
|
142
|
+
type: "object",
|
|
143
|
+
properties: {
|
|
144
|
+
timeout: {
|
|
145
|
+
description: "Suppression window in SECONDS. Identical entries within this window are collapsed. Default 10.",
|
|
146
|
+
type: "integer",
|
|
147
|
+
minimum: 1,
|
|
148
|
+
},
|
|
149
|
+
maxKeys: {
|
|
150
|
+
description: "Hard cap on tracked keys; the map self-prunes ( expired first, then oldest ) so memory stays bounded. Default 1024.",
|
|
151
|
+
type: "integer",
|
|
152
|
+
minimum: 1,
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
filters: {
|
|
157
|
+
description: "Composable per-logger filter pipeline. Each item is { type, ...opts } where `type` is the DI name of a LogFilter ( eg. LevelFilter, MatchFilter, RateLimitFilter, WhenRepeatedFilter ). Filters run in order in write(); any returning null drops the entry.",
|
|
158
|
+
type: "array",
|
|
159
|
+
items: {
|
|
160
|
+
type: "object",
|
|
161
|
+
properties: {
|
|
162
|
+
type: {
|
|
163
|
+
description: "DI string name of the registered LogFilter.",
|
|
41
164
|
type: "string",
|
|
42
165
|
},
|
|
43
|
-
maxArchiveFiles: {
|
|
44
|
-
type: "integer",
|
|
45
|
-
minimum: 1,
|
|
46
|
-
},
|
|
47
|
-
bufferSize: {
|
|
48
|
-
type: "integer",
|
|
49
|
-
minimum: 1000,
|
|
50
|
-
},
|
|
51
166
|
},
|
|
52
|
-
required: ["
|
|
167
|
+
required: ["type"],
|
|
53
168
|
},
|
|
54
169
|
},
|
|
55
170
|
rules: {
|
|
@@ -76,6 +191,20 @@ const CONFIGURATION_SCHEMA = {
|
|
|
76
191
|
"success",
|
|
77
192
|
],
|
|
78
193
|
},
|
|
194
|
+
maxLevel: {
|
|
195
|
+
description: "Optional INCLUSIVE upper bound of the level window this rule routes. With `level` as the lower bound, only entries in [level, maxLevel] are routed. Defaults to the highest level ( security ).",
|
|
196
|
+
type: "string",
|
|
197
|
+
enum: [
|
|
198
|
+
"trace",
|
|
199
|
+
"debug",
|
|
200
|
+
"warn",
|
|
201
|
+
"info",
|
|
202
|
+
"error",
|
|
203
|
+
"fatal",
|
|
204
|
+
"security",
|
|
205
|
+
"success",
|
|
206
|
+
],
|
|
207
|
+
},
|
|
79
208
|
target: {
|
|
80
209
|
oneOf: [
|
|
81
210
|
{
|
|
@@ -89,6 +218,10 @@ const CONFIGURATION_SCHEMA = {
|
|
|
89
218
|
},
|
|
90
219
|
],
|
|
91
220
|
},
|
|
221
|
+
final: {
|
|
222
|
+
description: "Stop evaluating further rules for a logger once this matching rule is applied ( NLog-style ). Earlier matched rules and this one still apply.",
|
|
223
|
+
type: "boolean",
|
|
224
|
+
},
|
|
92
225
|
},
|
|
93
226
|
required: ["name", "level", "target"],
|
|
94
227
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.configuration.js","sourceRoot":"","sources":["../../../src/schemas/log.configuration.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GAAG;IAC3B,GAAG,EAAE,uCAAuC;IAC5C,oBAAoB,EAAE,QAAQ;IAC9B,WAAW,EAAE,wCAAwC;IACrD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE;YACP,WAAW,EACT,wEAAwE;YAC1E,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;qBACf;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;qBACf;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;qBACf;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,SAAS;qBAChB;oBACD,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"log.configuration.js","sourceRoot":"","sources":["../../../src/schemas/log.configuration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { IColoredConsoleTargetOptions, ILogEntry, LogTarget } from "@spinajs/log-common";
|
|
2
|
+
/**
|
|
3
|
+
* Browser counterpart of ColoredConsoleTarget: same "ConsoleTarget" DI name so
|
|
4
|
+
* existing logger configs resolve it unchanged, but no chalk (Node-only) — the
|
|
5
|
+
* browser devtools console provides its own styling per console method.
|
|
6
|
+
*
|
|
7
|
+
* Registered ONLY by the browser entry (index.browser.ts); never add it to
|
|
8
|
+
* targets/index.ts or it would fight ColoredConsoleTarget over "ConsoleTarget"
|
|
9
|
+
* on Node.
|
|
10
|
+
*/
|
|
11
|
+
export declare class BrowserConsoleTarget extends LogTarget<IColoredConsoleTargetOptions> {
|
|
12
|
+
protected StdConsoleCallbackMap: {
|
|
13
|
+
5: {
|
|
14
|
+
(...data: any[]): void;
|
|
15
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
16
|
+
};
|
|
17
|
+
6: {
|
|
18
|
+
(...data: any[]): void;
|
|
19
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
20
|
+
};
|
|
21
|
+
999: {
|
|
22
|
+
(...data: any[]): void;
|
|
23
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
24
|
+
};
|
|
25
|
+
2: {
|
|
26
|
+
(...data: any[]): void;
|
|
27
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
28
|
+
};
|
|
29
|
+
3: {
|
|
30
|
+
(...data: any[]): void;
|
|
31
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
32
|
+
};
|
|
33
|
+
0: {
|
|
34
|
+
(...data: any[]): void;
|
|
35
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
36
|
+
};
|
|
37
|
+
1: {
|
|
38
|
+
(...data: any[]): void;
|
|
39
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
40
|
+
};
|
|
41
|
+
4: {
|
|
42
|
+
(...data: any[]): void;
|
|
43
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
write(data: ILogEntry): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=BrowserConsoleTarget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserConsoleTarget.d.ts","sourceRoot":"","sources":["../../../src/targets/BrowserConsoleTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,SAAS,EAET,SAAS,EACV,MAAM,qBAAqB,CAAC;AAI7B;;;;;;;;GAQG;AACH,qBAEa,oBAAqB,SAAQ,SAAS,CAAC,4BAA4B,CAAC;IAC/E,SAAS,CAAC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAY7B;IAEW,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CASnD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LogLevel, LogTarget, } from "@spinajs/log-common";
|
|
8
|
+
import { Injectable, Singleton } from "@spinajs/di";
|
|
9
|
+
import { format } from "@spinajs/configuration-common";
|
|
10
|
+
/**
|
|
11
|
+
* Browser counterpart of ColoredConsoleTarget: same "ConsoleTarget" DI name so
|
|
12
|
+
* existing logger configs resolve it unchanged, but no chalk (Node-only) — the
|
|
13
|
+
* browser devtools console provides its own styling per console method.
|
|
14
|
+
*
|
|
15
|
+
* Registered ONLY by the browser entry (index.browser.ts); never add it to
|
|
16
|
+
* targets/index.ts or it would fight ColoredConsoleTarget over "ConsoleTarget"
|
|
17
|
+
* on Node.
|
|
18
|
+
*/
|
|
19
|
+
let BrowserConsoleTarget = class BrowserConsoleTarget extends LogTarget {
|
|
20
|
+
constructor() {
|
|
21
|
+
super(...arguments);
|
|
22
|
+
this.StdConsoleCallbackMap = {
|
|
23
|
+
[LogLevel.Error]: console.error,
|
|
24
|
+
[LogLevel.Fatal]: console.error,
|
|
25
|
+
[LogLevel.Security]: console.error,
|
|
26
|
+
[LogLevel.Info]: console.log,
|
|
27
|
+
[LogLevel.Success]: console.log,
|
|
28
|
+
[LogLevel.Trace]: console.debug,
|
|
29
|
+
[LogLevel.Debug]: console.debug,
|
|
30
|
+
[LogLevel.Warn]: console.warn,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async write(data) {
|
|
34
|
+
if (!this.Options.enabled) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this.StdConsoleCallbackMap[data.Level](format(data.Variables, this.Options.layout));
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
BrowserConsoleTarget = __decorate([
|
|
41
|
+
Singleton(),
|
|
42
|
+
Injectable("ConsoleTarget")
|
|
43
|
+
], BrowserConsoleTarget);
|
|
44
|
+
export { BrowserConsoleTarget };
|
|
45
|
+
//# sourceMappingURL=BrowserConsoleTarget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserConsoleTarget.js","sourceRoot":"","sources":["../../../src/targets/BrowserConsoleTarget.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAGL,QAAQ,EACR,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAEvD;;;;;;;;GAQG;AAGI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,SAAuC;IAA1E;;QACK,0BAAqB,GAAG;YAChC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK;YAC/B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK;YAC/B,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK;YAElC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG;YAC5B,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG;YAE/B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK;YAC/B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK;YAE/B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI;SAC9B,CAAC;IAWJ,CAAC;IATQ,KAAK,CAAC,KAAK,CAAC,IAAe;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CACpC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAC5C,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,oBAAoB;IAFhC,SAAS,EAAE;IACX,UAAU,CAAC,eAAe,CAAC;GACf,oBAAoB,CAwBhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColoredConsoleTarget.d.ts","sourceRoot":"","sources":["../../../src/targets/ColoredConsoleTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,SAAS,EACT,SAAS,EACV,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ColoredConsoleTarget.d.ts","sourceRoot":"","sources":["../../../src/targets/ColoredConsoleTarget.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,SAAS,EACT,SAAS,EACV,MAAM,qBAAqB,CAAC;AAmB7B,eAAO,MAAM,aAAa;;;;;;;;;CASzB,CAAC;AAEF,qBAEa,oBAAqB,SAAQ,SAAS,CAAC,4BAA4B,CAAC;IAC/E,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAM;IAE5B,SAAS,CAAC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAY7B;IAEW,OAAO;IAaP,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAenD"}
|
|
@@ -7,8 +7,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { LogTarget, } from "@spinajs/log-common";
|
|
8
8
|
import { Injectable, Singleton } from "@spinajs/di";
|
|
9
9
|
import { LogLevel } from "./../index.js";
|
|
10
|
-
import chalk from "chalk";
|
|
11
10
|
import { format } from "@spinajs/configuration";
|
|
11
|
+
/**
|
|
12
|
+
* Minimal, dependency-free ANSI colour helpers ( replaces chalk ).
|
|
13
|
+
* Console target is Node-only, so raw escape codes are fine.
|
|
14
|
+
*/
|
|
15
|
+
const ANSI_RESET = "\x1b[0m";
|
|
16
|
+
const ansi = (open) => (text) => `${open}${text}${ANSI_RESET}`;
|
|
17
|
+
const gray = ansi("\x1b[90m");
|
|
18
|
+
const white = ansi("\x1b[37m");
|
|
19
|
+
const whiteBgGreen = ansi("\x1b[37m\x1b[42m");
|
|
20
|
+
const yellow = ansi("\x1b[33m");
|
|
21
|
+
const red = ansi("\x1b[31m");
|
|
22
|
+
const whiteBgRed = ansi("\x1b[37m\x1b[41m");
|
|
23
|
+
const yellowBgRed = ansi("\x1b[33m\x1b[41m");
|
|
12
24
|
export const DEFAULT_THEME = {
|
|
13
25
|
security: ["red", "bgBrightWhite"],
|
|
14
26
|
fatal: "red",
|
|
@@ -35,14 +47,14 @@ let ColoredConsoleTarget = class ColoredConsoleTarget extends LogTarget {
|
|
|
35
47
|
};
|
|
36
48
|
}
|
|
37
49
|
async resolve() {
|
|
38
|
-
this.theme[LogLevel.Trace] =
|
|
39
|
-
this.theme[LogLevel.Debug] =
|
|
40
|
-
this.theme[LogLevel.Info] =
|
|
41
|
-
this.theme[LogLevel.Success] =
|
|
42
|
-
this.theme[LogLevel.Warn] =
|
|
43
|
-
this.theme[LogLevel.Error] =
|
|
44
|
-
this.theme[LogLevel.Fatal] =
|
|
45
|
-
this.theme[LogLevel.Security] =
|
|
50
|
+
this.theme[LogLevel.Trace] = gray;
|
|
51
|
+
this.theme[LogLevel.Debug] = gray;
|
|
52
|
+
this.theme[LogLevel.Info] = white;
|
|
53
|
+
this.theme[LogLevel.Success] = whiteBgGreen;
|
|
54
|
+
this.theme[LogLevel.Warn] = yellow;
|
|
55
|
+
this.theme[LogLevel.Error] = red;
|
|
56
|
+
this.theme[LogLevel.Fatal] = whiteBgRed;
|
|
57
|
+
this.theme[LogLevel.Security] = yellowBgRed;
|
|
46
58
|
super.resolve();
|
|
47
59
|
}
|
|
48
60
|
async write(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColoredConsoleTarget.js","sourceRoot":"","sources":["../../../src/targets/ColoredConsoleTarget.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAGL,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"ColoredConsoleTarget.js","sourceRoot":"","sources":["../../../src/targets/ColoredConsoleTarget.ts"],"names":[],"mappings":"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"}
|