@fluidframework/telemetry-utils 2.0.0-internal.6.1.2 → 2.0.0-internal.6.2.1
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/.eslintrc.js +2 -1
- package/CHANGELOG.md +31 -0
- package/README.md +4 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -4
- package/dist/config.js.map +1 -1
- package/dist/error.d.ts +92 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +133 -0
- package/dist/error.js.map +1 -0
- package/dist/errorLogging.d.ts +27 -11
- package/dist/errorLogging.d.ts.map +1 -1
- package/dist/errorLogging.js +42 -17
- package/dist/errorLogging.js.map +1 -1
- package/dist/eventEmitterWithErrorHandling.d.ts +2 -2
- package/dist/eventEmitterWithErrorHandling.d.ts.map +1 -1
- package/dist/eventEmitterWithErrorHandling.js +4 -1
- package/dist/eventEmitterWithErrorHandling.js.map +1 -1
- package/dist/events.d.ts +1 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/fluidErrorBase.d.ts +48 -15
- package/dist/fluidErrorBase.d.ts.map +1 -1
- package/dist/fluidErrorBase.js +18 -11
- package/dist/fluidErrorBase.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +28 -16
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +41 -14
- package/dist/logger.js.map +1 -1
- package/dist/mockLogger.d.ts +14 -5
- package/dist/mockLogger.d.ts.map +1 -1
- package/dist/mockLogger.js +19 -7
- package/dist/mockLogger.js.map +1 -1
- package/dist/sampledTelemetryHelper.d.ts +8 -7
- package/dist/sampledTelemetryHelper.d.ts.map +1 -1
- package/dist/sampledTelemetryHelper.js +10 -8
- package/dist/sampledTelemetryHelper.js.map +1 -1
- package/dist/telemetryTypes.d.ts +8 -4
- package/dist/telemetryTypes.d.ts.map +1 -1
- package/dist/telemetryTypes.js.map +1 -1
- package/dist/thresholdCounter.d.ts.map +1 -1
- package/dist/thresholdCounter.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js.map +1 -1
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +9 -4
- package/lib/config.js.map +1 -1
- package/lib/error.d.ts +92 -0
- package/lib/error.d.ts.map +1 -0
- package/lib/error.js +125 -0
- package/lib/error.js.map +1 -0
- package/lib/errorLogging.d.ts +27 -11
- package/lib/errorLogging.d.ts.map +1 -1
- package/lib/errorLogging.js +42 -17
- package/lib/errorLogging.js.map +1 -1
- package/lib/eventEmitterWithErrorHandling.d.ts +2 -2
- package/lib/eventEmitterWithErrorHandling.d.ts.map +1 -1
- package/lib/eventEmitterWithErrorHandling.js +4 -1
- package/lib/eventEmitterWithErrorHandling.js.map +1 -1
- package/lib/events.d.ts +1 -1
- package/lib/events.d.ts.map +1 -1
- package/lib/events.js.map +1 -1
- package/lib/fluidErrorBase.d.ts +48 -15
- package/lib/fluidErrorBase.d.ts.map +1 -1
- package/lib/fluidErrorBase.js +18 -11
- package/lib/fluidErrorBase.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/logger.d.ts +28 -16
- package/lib/logger.d.ts.map +1 -1
- package/lib/logger.js +41 -14
- package/lib/logger.js.map +1 -1
- package/lib/mockLogger.d.ts +14 -5
- package/lib/mockLogger.d.ts.map +1 -1
- package/lib/mockLogger.js +19 -7
- package/lib/mockLogger.js.map +1 -1
- package/lib/sampledTelemetryHelper.d.ts +8 -7
- package/lib/sampledTelemetryHelper.d.ts.map +1 -1
- package/lib/sampledTelemetryHelper.js +10 -8
- package/lib/sampledTelemetryHelper.js.map +1 -1
- package/lib/telemetryTypes.d.ts +8 -4
- package/lib/telemetryTypes.d.ts.map +1 -1
- package/lib/telemetryTypes.js.map +1 -1
- package/lib/thresholdCounter.d.ts.map +1 -1
- package/lib/thresholdCounter.js.map +1 -1
- package/lib/utils.d.ts +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js.map +1 -1
- package/package.json +11 -11
- package/src/config.ts +12 -7
- package/src/error.ts +202 -0
- package/src/errorLogging.ts +78 -38
- package/src/eventEmitterWithErrorHandling.ts +4 -2
- package/src/events.ts +3 -3
- package/src/fluidErrorBase.ts +62 -26
- package/src/index.ts +7 -0
- package/src/logger.ts +109 -35
- package/src/mockLogger.ts +25 -14
- package/src/sampledTelemetryHelper.ts +17 -13
- package/src/telemetryTypes.ts +20 -4
- package/src/thresholdCounter.ts +2 -2
- package/src/utils.ts +1 -1
|
@@ -12,11 +12,14 @@ import {
|
|
|
12
12
|
import { performance } from "@fluidframework/common-utils";
|
|
13
13
|
import { ITelemetryLoggerExt } from "./telemetryTypes";
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* @privateRemarks
|
|
17
|
+
*
|
|
18
|
+
* The names of the properties in this interface are the ones that will get stamped in the
|
|
19
|
+
* telemetry event, changes should be considered carefully. The optional properties should
|
|
20
|
+
* only be populated if 'includeAggregateMetrics' is true.
|
|
21
|
+
*/
|
|
15
22
|
interface Measurements {
|
|
16
|
-
// The names of the properties in this interface are the ones that will get stamped in the
|
|
17
|
-
// telemetry event, changes should be considered carefully. The optional properties should
|
|
18
|
-
// only be populated if 'includeAggregateMetrics' is true.
|
|
19
|
-
|
|
20
23
|
/**
|
|
21
24
|
* The duration of the latest execution.
|
|
22
25
|
*/
|
|
@@ -45,7 +48,7 @@ interface Measurements {
|
|
|
45
48
|
|
|
46
49
|
/**
|
|
47
50
|
* Helper class that executes a specified code block and writes an
|
|
48
|
-
* {@link @fluidframework/
|
|
51
|
+
* {@link @fluidframework/core-interfaces#ITelemetryPerformanceEvent} to a specified logger every time a specified
|
|
49
52
|
* number of executions is reached (or when the class is disposed). The `duration` field in the telemetry event is
|
|
50
53
|
* the duration of the latest execution (sample) of the specified function. See the documentation of the
|
|
51
54
|
* `includeAggregateMetrics` parameter for additional details that can be included.
|
|
@@ -82,12 +85,13 @@ export class SampledTelemetryHelper implements IDisposable {
|
|
|
82
85
|
) {}
|
|
83
86
|
|
|
84
87
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* value.
|
|
88
|
+
* Executes the specified code and keeps track of execution time statistics.
|
|
89
|
+
* If it's been called enough times (the sampleThreshold for the class) then it generates a log message with the necessary information.
|
|
90
|
+
*
|
|
91
|
+
* @param codeToMeasure - The code to be executed and measured.
|
|
92
|
+
* @param bucket - A key to track executions of the code block separately.
|
|
93
|
+
* Each different value of this parameter has a separate set of executions and metrics tracked by the class.
|
|
94
|
+
* If no such distinction needs to be made, do not provide a value.
|
|
91
95
|
* @returns Whatever the passed-in code block returns.
|
|
92
96
|
*/
|
|
93
97
|
public measure<T>(codeToMeasure: () => T, bucket: string = ""): T {
|
|
@@ -116,7 +120,7 @@ export class SampledTelemetryHelper implements IDisposable {
|
|
|
116
120
|
return returnValue;
|
|
117
121
|
}
|
|
118
122
|
|
|
119
|
-
private flushBucket(bucket: string) {
|
|
123
|
+
private flushBucket(bucket: string): void {
|
|
120
124
|
const measurements = this.measurementsMap.get(bucket);
|
|
121
125
|
if (measurements === undefined) {
|
|
122
126
|
return;
|
|
@@ -137,6 +141,6 @@ export class SampledTelemetryHelper implements IDisposable {
|
|
|
137
141
|
}
|
|
138
142
|
|
|
139
143
|
public dispose(error?: Error | undefined): void {
|
|
140
|
-
this.measurementsMap.
|
|
144
|
+
for (const [k] of this.measurementsMap.entries()) this.flushBucket(k);
|
|
141
145
|
}
|
|
142
146
|
}
|
package/src/telemetryTypes.ts
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
ITelemetryBaseLogger,
|
|
8
|
+
LogLevel,
|
|
9
|
+
TelemetryEventCategory,
|
|
10
|
+
} from "@fluidframework/core-interfaces";
|
|
7
11
|
|
|
8
12
|
/**
|
|
9
13
|
* Property types that can be logged.
|
|
@@ -83,18 +87,30 @@ export interface ITelemetryLoggerExt extends ITelemetryBaseLogger {
|
|
|
83
87
|
* Send information telemetry event
|
|
84
88
|
* @param event - Event to send
|
|
85
89
|
* @param error - optional error object to log
|
|
90
|
+
* @param logLevel - optional level of the log.
|
|
86
91
|
*/
|
|
87
|
-
sendTelemetryEvent(
|
|
92
|
+
sendTelemetryEvent(
|
|
93
|
+
event: ITelemetryGenericEventExt,
|
|
94
|
+
error?: unknown,
|
|
95
|
+
logLevel?: LogLevel.verbose | LogLevel.default,
|
|
96
|
+
): void;
|
|
88
97
|
|
|
89
98
|
/**
|
|
90
99
|
* Send error telemetry event
|
|
91
100
|
* @param event - Event to send
|
|
101
|
+
* @param error - optional error object to log
|
|
92
102
|
*/
|
|
93
|
-
sendErrorEvent(event: ITelemetryErrorEventExt, error?:
|
|
103
|
+
sendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void;
|
|
94
104
|
|
|
95
105
|
/**
|
|
96
106
|
* Send performance telemetry event
|
|
97
107
|
* @param event - Event to send
|
|
108
|
+
* @param error - optional error object to log
|
|
109
|
+
* @param logLevel - optional level of the log.
|
|
98
110
|
*/
|
|
99
|
-
sendPerformanceEvent(
|
|
111
|
+
sendPerformanceEvent(
|
|
112
|
+
event: ITelemetryPerformanceEventExt,
|
|
113
|
+
error?: unknown,
|
|
114
|
+
logLevel?: LogLevel.verbose | LogLevel.default,
|
|
115
|
+
): void;
|
|
100
116
|
}
|
package/src/thresholdCounter.ts
CHANGED
|
@@ -19,7 +19,7 @@ export class ThresholdCounter {
|
|
|
19
19
|
/**
|
|
20
20
|
* Sends the value if it's above the treshold.
|
|
21
21
|
*/
|
|
22
|
-
public send(eventName: string, value: number) {
|
|
22
|
+
public send(eventName: string, value: number): void {
|
|
23
23
|
if (value < this.threshold) {
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
@@ -36,7 +36,7 @@ export class ThresholdCounter {
|
|
|
36
36
|
* To be used in scenarios where we'd like to record a
|
|
37
37
|
* threshold violation while reducing telemetry noise.
|
|
38
38
|
*/
|
|
39
|
-
public sendIfMultiple(eventName: string, value: number) {
|
|
39
|
+
public sendIfMultiple(eventName: string, value: number): void {
|
|
40
40
|
if (value === this.thresholdMultiple) {
|
|
41
41
|
this.logger.sendPerformanceEvent({
|
|
42
42
|
eventName,
|
package/src/utils.ts
CHANGED