@webex/plugin-logger 3.0.0-beta.9 → 3.0.0-bnr.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.js +0 -4
- package/dist/config.js.map +1 -1
- package/dist/index.js +1 -13
- package/dist/index.js.map +1 -1
- package/dist/logger.js +24 -75
- package/dist/logger.js.map +1 -1
- package/dist/plugin-logger.d.ts +10 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/types/config.d.ts +19 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/logger.d.ts +7 -0
- package/package.json +7 -7
- package/src/config.js +2 -2
- package/src/index.js +2 -5
- package/src/logger.js +53 -43
- package/test/unit/spec/logger.js +235 -96
package/src/logger.js
CHANGED
|
@@ -3,17 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import {inBrowser, patterns} from '@webex/common';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
WebexPlugin
|
|
9
|
-
} from '@webex/webex-core';
|
|
10
|
-
import {
|
|
11
|
-
cloneDeep,
|
|
12
|
-
has,
|
|
13
|
-
isArray,
|
|
14
|
-
isObject,
|
|
15
|
-
isString
|
|
16
|
-
} from 'lodash';
|
|
6
|
+
import {WebexHttpError, WebexPlugin} from '@webex/webex-core';
|
|
7
|
+
import {cloneDeep, has, isArray, isObject, isString} from 'lodash';
|
|
17
8
|
|
|
18
9
|
const precedence = {
|
|
19
10
|
silent: 0,
|
|
@@ -24,7 +15,7 @@ const precedence = {
|
|
|
24
15
|
log: 5,
|
|
25
16
|
info: 6,
|
|
26
17
|
debug: 7,
|
|
27
|
-
trace: 8
|
|
18
|
+
trace: 8,
|
|
28
19
|
};
|
|
29
20
|
|
|
30
21
|
export const levels = Object.keys(precedence).filter((level) => level !== 'silent');
|
|
@@ -34,12 +25,12 @@ const fallbacks = {
|
|
|
34
25
|
warn: ['error', 'log'],
|
|
35
26
|
info: ['log'],
|
|
36
27
|
debug: ['info', 'log'],
|
|
37
|
-
trace: ['debug', 'info', 'log']
|
|
28
|
+
trace: ['debug', 'info', 'log'],
|
|
38
29
|
};
|
|
39
30
|
|
|
40
31
|
const LOG_TYPES = {
|
|
41
32
|
SDK: 'sdk',
|
|
42
|
-
CLIENT: 'client'
|
|
33
|
+
CLIENT: 'client',
|
|
43
34
|
};
|
|
44
35
|
|
|
45
36
|
const SDK_LOG_TYPE_NAME = 'wx-js-sdk';
|
|
@@ -77,8 +68,7 @@ function walkAndFilter(object, visited = []) {
|
|
|
77
68
|
for (const [key, value] of Object.entries(object)) {
|
|
78
69
|
if (authTokenKeyPattern.test(key)) {
|
|
79
70
|
Reflect.deleteProperty(object, key);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
71
|
+
} else {
|
|
82
72
|
object[key] = walkAndFilter(value, visited);
|
|
83
73
|
}
|
|
84
74
|
}
|
|
@@ -97,14 +87,14 @@ const Logger = WebexPlugin.extend({
|
|
|
97
87
|
cache: false,
|
|
98
88
|
fn() {
|
|
99
89
|
return this.getCurrentLevel();
|
|
100
|
-
}
|
|
90
|
+
},
|
|
101
91
|
},
|
|
102
92
|
client_level: {
|
|
103
93
|
cache: false,
|
|
104
94
|
fn() {
|
|
105
95
|
return this.getCurrentClientLevel();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
96
|
+
},
|
|
97
|
+
},
|
|
108
98
|
},
|
|
109
99
|
session: {
|
|
110
100
|
// for when configured to use single buffer
|
|
@@ -112,27 +102,27 @@ const Logger = WebexPlugin.extend({
|
|
|
112
102
|
type: 'array',
|
|
113
103
|
default() {
|
|
114
104
|
return [];
|
|
115
|
-
}
|
|
105
|
+
},
|
|
116
106
|
},
|
|
117
107
|
groupLevel: {
|
|
118
108
|
type: 'number',
|
|
119
109
|
default() {
|
|
120
110
|
return 0;
|
|
121
|
-
}
|
|
111
|
+
},
|
|
122
112
|
},
|
|
123
113
|
// for when configured to use separate buffers
|
|
124
114
|
sdkBuffer: {
|
|
125
115
|
type: 'array',
|
|
126
116
|
default() {
|
|
127
117
|
return [];
|
|
128
|
-
}
|
|
118
|
+
},
|
|
129
119
|
},
|
|
130
120
|
clientBuffer: {
|
|
131
121
|
type: 'array',
|
|
132
122
|
default() {
|
|
133
123
|
return [];
|
|
134
|
-
}
|
|
135
|
-
}
|
|
124
|
+
},
|
|
125
|
+
},
|
|
136
126
|
},
|
|
137
127
|
|
|
138
128
|
/**
|
|
@@ -178,7 +168,10 @@ const Logger = WebexPlugin.extend({
|
|
|
178
168
|
* @returns {boolean}
|
|
179
169
|
*/
|
|
180
170
|
shouldPrint(level, type = LOG_TYPES.SDK) {
|
|
181
|
-
return
|
|
171
|
+
return (
|
|
172
|
+
precedence[level] <=
|
|
173
|
+
precedence[type === LOG_TYPES.SDK ? this.getCurrentLevel() : this.getCurrentClientLevel()]
|
|
174
|
+
);
|
|
182
175
|
},
|
|
183
176
|
|
|
184
177
|
/**
|
|
@@ -194,7 +187,10 @@ const Logger = WebexPlugin.extend({
|
|
|
194
187
|
* @returns {boolean}
|
|
195
188
|
*/
|
|
196
189
|
shouldBuffer(level) {
|
|
197
|
-
return
|
|
190
|
+
return (
|
|
191
|
+
precedence[level] <=
|
|
192
|
+
(this.config.bufferLogLevel ? precedence[this.config.bufferLogLevel] : precedence.info)
|
|
193
|
+
);
|
|
198
194
|
},
|
|
199
195
|
|
|
200
196
|
/**
|
|
@@ -223,7 +219,8 @@ const Logger = WebexPlugin.extend({
|
|
|
223
219
|
}
|
|
224
220
|
|
|
225
221
|
// Use server-side-feature toggles to configure log levels
|
|
226
|
-
const level =
|
|
222
|
+
const level =
|
|
223
|
+
this.webex.internal.device && this.webex.internal.device.features.developer.get('log-level');
|
|
227
224
|
|
|
228
225
|
if (level) {
|
|
229
226
|
if (levels.includes(level)) {
|
|
@@ -275,11 +272,14 @@ const Logger = WebexPlugin.extend({
|
|
|
275
272
|
// merge the client and sdk buffers
|
|
276
273
|
// while we have entries in either buffer
|
|
277
274
|
while (clientIndex < this.clientBuffer.length || sdkIndex < this.sdkBuffer.length) {
|
|
278
|
-
|
|
279
|
-
if (
|
|
275
|
+
// if we have remaining entries in the SDK buffer
|
|
276
|
+
if (
|
|
277
|
+
sdkIndex < this.sdkBuffer.length &&
|
|
280
278
|
// and we haven't exhausted all the client buffer entries, or SDK date is before client date
|
|
281
279
|
(clientIndex >= this.clientBuffer.length ||
|
|
282
|
-
|
|
280
|
+
new Date(getDate(this.sdkBuffer[sdkIndex])) <=
|
|
281
|
+
new Date(getDate(this.clientBuffer[clientIndex])))
|
|
282
|
+
) {
|
|
283
283
|
// then add to the SDK buffer
|
|
284
284
|
buffer.push(this.sdkBuffer[sdkIndex]);
|
|
285
285
|
sdkIndex += 1;
|
|
@@ -291,13 +291,12 @@ const Logger = WebexPlugin.extend({
|
|
|
291
291
|
clientIndex += 1;
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
294
|
+
} else {
|
|
296
295
|
buffer = this.buffer;
|
|
297
296
|
}
|
|
298
297
|
|
|
299
298
|
return buffer.join('\n');
|
|
300
|
-
}
|
|
299
|
+
},
|
|
301
300
|
});
|
|
302
301
|
|
|
303
302
|
/**
|
|
@@ -323,16 +322,18 @@ function makeLoggerMethod(level, impl, type, neverPrint = false, alwaysBuffer =
|
|
|
323
322
|
// in Ampersand, even if the initialize method is used to set this up. so we keep the type to achieve
|
|
324
323
|
// a sort of late binding to allow retrieving a name from config.
|
|
325
324
|
const logType = type;
|
|
326
|
-
const clientName =
|
|
325
|
+
const clientName =
|
|
326
|
+
logType === LOG_TYPES.SDK ? SDK_LOG_TYPE_NAME : this.config.clientName || logType;
|
|
327
327
|
|
|
328
328
|
let buffer;
|
|
329
329
|
let historyLength;
|
|
330
330
|
|
|
331
331
|
if (this.config.separateLogBuffers) {
|
|
332
|
-
historyLength = this.config.clientHistoryLength
|
|
332
|
+
historyLength = this.config.clientHistoryLength
|
|
333
|
+
? this.config.clientHistoryLength
|
|
334
|
+
: this.config.historyLength;
|
|
333
335
|
buffer = logType === LOG_TYPES.SDK ? this.sdkBuffer : this.clientBuffer;
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
+
} else {
|
|
336
337
|
buffer = this.buffer;
|
|
337
338
|
historyLength = this.config.historyLength;
|
|
338
339
|
}
|
|
@@ -381,8 +382,7 @@ function makeLoggerMethod(level, impl, type, neverPrint = false, alwaysBuffer =
|
|
|
381
382
|
if (level === 'group') this.groupLevel += 1;
|
|
382
383
|
if (level === 'groupEnd' && this.groupLevel > 0) this.groupLevel -= 1;
|
|
383
384
|
}
|
|
384
|
-
}
|
|
385
|
-
catch (reason) {
|
|
385
|
+
} catch (reason) {
|
|
386
386
|
if (!neverPrint) {
|
|
387
387
|
/* istanbul ignore next */
|
|
388
388
|
// eslint-disable-next-line no-console
|
|
@@ -404,14 +404,24 @@ levels.forEach((level) => {
|
|
|
404
404
|
}
|
|
405
405
|
}
|
|
406
406
|
|
|
407
|
-
|
|
408
407
|
// eslint-disable-next-line complexity
|
|
409
408
|
Logger.prototype[`client_${level}`] = makeLoggerMethod(level, impl, LOG_TYPES.CLIENT);
|
|
410
409
|
Logger.prototype[level] = makeLoggerMethod(level, impl, LOG_TYPES.SDK);
|
|
411
410
|
});
|
|
412
411
|
|
|
413
|
-
Logger.prototype.client_logToBuffer =
|
|
414
|
-
|
|
415
|
-
|
|
412
|
+
Logger.prototype.client_logToBuffer = makeLoggerMethod(
|
|
413
|
+
levels.info,
|
|
414
|
+
levels.info,
|
|
415
|
+
LOG_TYPES.CLIENT,
|
|
416
|
+
true,
|
|
417
|
+
true
|
|
418
|
+
);
|
|
419
|
+
Logger.prototype.logToBuffer = makeLoggerMethod(
|
|
420
|
+
levels.info,
|
|
421
|
+
levels.info,
|
|
422
|
+
LOG_TYPES.SDK,
|
|
423
|
+
true,
|
|
424
|
+
true
|
|
425
|
+
);
|
|
416
426
|
|
|
417
427
|
export default Logger;
|