@squiz/component-logger-lib 1.69.0 → 1.71.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/CHANGELOG.md +16 -0
- package/jest.integration.config.ts +2 -4
- package/lib/component-logger.d.ts +4 -2
- package/lib/component-logger.integration.spec.js +1 -1
- package/lib/component-logger.integration.spec.js.map +1 -1
- package/lib/component-logger.js +36 -9
- package/lib/component-logger.js.map +1 -1
- package/lib/component-logger.spec.js +94 -4
- package/lib/component-logger.spec.js.map +1 -1
- package/package.json +4 -3
- package/src/component-logger.integration.spec.ts +1 -1
- package/src/component-logger.spec.ts +118 -5
- package/src/component-logger.ts +46 -12
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @squiz/component-logger-lib
|
|
2
2
|
|
|
3
|
+
## 1.71.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 0d445ab: Avoid waiting for logging request to complete, parallelize more work when saving a content page.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 0d445ab: Added spans to more easily identify different portions of the request which relate to saving a content page
|
|
12
|
+
|
|
13
|
+
## 1.70.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- c719a29: Don't throw error if Logging API fails
|
|
18
|
+
|
|
3
19
|
## 1.69.0
|
|
4
20
|
|
|
5
21
|
### Minor Changes
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import type { Config } from 'jest';
|
|
2
2
|
import { config as dotEnvConfig } from 'dotenv';
|
|
3
|
+
import { defaultIntegrationConfig } from '../../jest.config';
|
|
3
4
|
|
|
4
5
|
dotEnvConfig();
|
|
5
6
|
|
|
6
7
|
// Sync object
|
|
7
8
|
const config: Config = {
|
|
8
|
-
|
|
9
|
-
testTimeout: 60_000,
|
|
10
|
-
testEnvironment: 'node',
|
|
11
|
-
testRegex: '.*\\.integration\\.spec\\.ts$',
|
|
9
|
+
...defaultIntegrationConfig,
|
|
12
10
|
maxWorkers: 1,
|
|
13
11
|
};
|
|
14
12
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ComponentLogLevel } from './component-log-message';
|
|
2
2
|
import { ComponentLoggerConfig } from './component-logger-config';
|
|
3
|
+
export declare const MAX_MESSAGE_LENGTH = 200000;
|
|
3
4
|
export declare const MAX_TAG_LENGTH = 200;
|
|
4
5
|
export declare class ComponentLogger {
|
|
5
|
-
readonly config
|
|
6
|
+
private readonly config;
|
|
6
7
|
private batch;
|
|
7
8
|
constructor(config: ComponentLoggerConfig);
|
|
8
9
|
debug(message: string | any, traceId?: string, userId?: string, tags?: string): Promise<void>;
|
|
@@ -11,5 +12,6 @@ export declare class ComponentLogger {
|
|
|
11
12
|
error(message: string | any, traceId?: string, userId?: string, tags?: string): Promise<void>;
|
|
12
13
|
protected append(level: ComponentLogLevel, message: string | any, traceId?: string, userId?: string, tags?: string): Promise<void>;
|
|
13
14
|
private cleanTags;
|
|
14
|
-
flush(): Promise<void>;
|
|
15
|
+
flush(background?: boolean): Promise<void>;
|
|
16
|
+
private flushInternal;
|
|
15
17
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const dx_common_lib_1 = require("@squiz/dx-common-lib");
|
|
4
4
|
const _1 = require(".");
|
|
5
|
-
describe('ComponentLogger', () => {
|
|
5
|
+
describe.skip('ComponentLogger', () => {
|
|
6
6
|
it('should sending log messages', async () => {
|
|
7
7
|
const logger = await (0, _1.getComponentLogger)({
|
|
8
8
|
enabled: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-logger.integration.spec.js","sourceRoot":"","sources":["../src/component-logger.integration.spec.ts"],"names":[],"mappings":";;AAAA,wDAAyD;AACzD,wBAAuC;AAEvC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"component-logger.integration.spec.js","sourceRoot":"","sources":["../src/component-logger.integration.spec.ts"],"names":[],"mappings":";;AAAA,wDAAyD;AACzD,wBAAuC;AAEvC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAkB,EAAC;YACtC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,kBAAkB;YAC5B,iBAAiB,EAAE,IAAA,iCAAiB,EAAC,iCAAiC,CAAC;YACvE,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,cAAc;SAC5B,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/lib/component-logger.js
CHANGED
|
@@ -3,10 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ComponentLogger = exports.MAX_TAG_LENGTH = void 0;
|
|
6
|
+
exports.ComponentLogger = exports.MAX_TAG_LENGTH = exports.MAX_MESSAGE_LENGTH = void 0;
|
|
7
7
|
const superagent_1 = __importDefault(require("superagent"));
|
|
8
|
+
const api_1 = require("@opentelemetry/api");
|
|
8
9
|
const MESSAGE_BATCH_SIZE = 100;
|
|
10
|
+
exports.MAX_MESSAGE_LENGTH = 200000;
|
|
9
11
|
exports.MAX_TAG_LENGTH = 200;
|
|
12
|
+
const tracer = api_1.trace.getTracer('component-logger-lib:ComponentLogger');
|
|
10
13
|
class ComponentLogger {
|
|
11
14
|
constructor(config) {
|
|
12
15
|
this.config = config;
|
|
@@ -42,7 +45,7 @@ class ComponentLogger {
|
|
|
42
45
|
level: level,
|
|
43
46
|
service: this.config.serviceName,
|
|
44
47
|
timestamp: new Date().toISOString(),
|
|
45
|
-
message: payload,
|
|
48
|
+
message: payload.slice(0, exports.MAX_MESSAGE_LENGTH),
|
|
46
49
|
traceid: traceId,
|
|
47
50
|
userid: userId,
|
|
48
51
|
};
|
|
@@ -69,18 +72,42 @@ class ComponentLogger {
|
|
|
69
72
|
tags = tags.slice(0, exports.MAX_TAG_LENGTH);
|
|
70
73
|
return tags;
|
|
71
74
|
}
|
|
72
|
-
async flush() {
|
|
73
|
-
|
|
75
|
+
async flush(background = true) {
|
|
76
|
+
const promise = this.flushInternal();
|
|
77
|
+
// avoid holding up requests by default, don't await completion.
|
|
78
|
+
if (!background) {
|
|
79
|
+
await promise;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async flushInternal() {
|
|
83
|
+
if (!this.config.enabled || this.batch.length === 0) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
return tracer.startActiveSpan('flush', {
|
|
87
|
+
attributes: {
|
|
88
|
+
'batch.length': this.batch.length,
|
|
89
|
+
},
|
|
90
|
+
}, async (span) => {
|
|
91
|
+
const logs = this.batch;
|
|
92
|
+
this.batch = [];
|
|
74
93
|
try {
|
|
75
|
-
const url = `${this.config.logUrl.replace(/\/+$/, '')}
|
|
76
|
-
await superagent_1.default
|
|
77
|
-
|
|
94
|
+
const url = `${this.config.logUrl.replace(/\/+$/, '')}`;
|
|
95
|
+
await superagent_1.default
|
|
96
|
+
.post(url)
|
|
97
|
+
.set({
|
|
98
|
+
'x-dxp-tenant': this.config.tenantId,
|
|
99
|
+
'x-api-key': this.config.key,
|
|
100
|
+
})
|
|
101
|
+
.send(logs);
|
|
78
102
|
}
|
|
79
103
|
catch (err) {
|
|
104
|
+
this.batch.push(...logs);
|
|
80
105
|
console.error(err);
|
|
81
|
-
throw err;
|
|
82
106
|
}
|
|
83
|
-
|
|
107
|
+
finally {
|
|
108
|
+
span.end();
|
|
109
|
+
}
|
|
110
|
+
});
|
|
84
111
|
}
|
|
85
112
|
}
|
|
86
113
|
exports.ComponentLogger = ComponentLogger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-logger.js","sourceRoot":"","sources":["../src/component-logger.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAoC;
|
|
1
|
+
{"version":3,"file":"component-logger.js","sourceRoot":"","sources":["../src/component-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const component_logger_1 = require("./component-logger");
|
|
7
7
|
const superagent_1 = __importDefault(require("superagent"));
|
|
8
|
+
const timers_1 = require("timers");
|
|
8
9
|
const postSetMock = {
|
|
9
10
|
send: jest.fn(),
|
|
10
11
|
};
|
|
@@ -14,7 +15,10 @@ const postMock = {
|
|
|
14
15
|
},
|
|
15
16
|
};
|
|
16
17
|
jest.mock('superagent', () => ({
|
|
17
|
-
post: () => {
|
|
18
|
+
post: (url) => {
|
|
19
|
+
if (url === 'fail-logging-api-url') {
|
|
20
|
+
throw Error('logging failed');
|
|
21
|
+
}
|
|
18
22
|
return postMock;
|
|
19
23
|
},
|
|
20
24
|
}));
|
|
@@ -30,11 +34,13 @@ describe('ComponentLogger', () => {
|
|
|
30
34
|
afterEach(() => {
|
|
31
35
|
jest.clearAllMocks();
|
|
32
36
|
});
|
|
37
|
+
const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(jest.fn());
|
|
33
38
|
beforeAll(() => {
|
|
34
39
|
jest.useFakeTimers();
|
|
35
40
|
jest.setSystemTime(new Date('2023-05-28T00:00:00.000Z'));
|
|
36
41
|
});
|
|
37
42
|
afterAll(() => {
|
|
43
|
+
consoleErrorSpy.mockReset();
|
|
38
44
|
jest.useRealTimers();
|
|
39
45
|
});
|
|
40
46
|
it('should throw error if config.logUrl is not set', async () => {
|
|
@@ -76,8 +82,11 @@ describe('ComponentLogger', () => {
|
|
|
76
82
|
const logger = new component_logger_1.ComponentLogger(loggerConfig);
|
|
77
83
|
await logger.info('The quick brown fox', '123');
|
|
78
84
|
await logger.flush();
|
|
79
|
-
expect(postSpy).toBeCalledWith('some-log-url
|
|
80
|
-
expect(postSetSpy).toBeCalledWith(
|
|
85
|
+
expect(postSpy).toBeCalledWith('some-log-url');
|
|
86
|
+
expect(postSetSpy).toBeCalledWith({
|
|
87
|
+
'x-api-key': 'some-key',
|
|
88
|
+
'x-dxp-tenant': 'some-tenant-id',
|
|
89
|
+
});
|
|
81
90
|
});
|
|
82
91
|
it('should strip off extra "/" on the logUrl', async () => {
|
|
83
92
|
const loggerConfig = {
|
|
@@ -92,7 +101,7 @@ describe('ComponentLogger', () => {
|
|
|
92
101
|
const logger = new component_logger_1.ComponentLogger(loggerConfig);
|
|
93
102
|
await logger.info('The quick brown fox', '123');
|
|
94
103
|
await logger.flush();
|
|
95
|
-
expect(postSpy).toBeCalledWith('some-log-url
|
|
104
|
+
expect(postSpy).toBeCalledWith('some-log-url');
|
|
96
105
|
});
|
|
97
106
|
it('should not include "tags" in payload if tags is not configured', async () => {
|
|
98
107
|
const loggerConfig = {
|
|
@@ -324,5 +333,86 @@ describe('ComponentLogger', () => {
|
|
|
324
333
|
];
|
|
325
334
|
expect(postSetMock.send).toBeCalledWith(expectedMessages);
|
|
326
335
|
});
|
|
336
|
+
it('should truncate long messages', async () => {
|
|
337
|
+
const logger = new component_logger_1.ComponentLogger(loggerConfig);
|
|
338
|
+
const message = 'a'.repeat(component_logger_1.MAX_MESSAGE_LENGTH + 1);
|
|
339
|
+
await logger.info(message);
|
|
340
|
+
await logger.flush();
|
|
341
|
+
expect(postSetMock.send).toHaveBeenCalledWith([
|
|
342
|
+
expect.objectContaining({
|
|
343
|
+
message: message.slice(0, -1),
|
|
344
|
+
}),
|
|
345
|
+
]);
|
|
346
|
+
});
|
|
347
|
+
it('should not throw error if logging API fails', async () => {
|
|
348
|
+
const loggerConfig = {
|
|
349
|
+
enabled: true,
|
|
350
|
+
logUrl: 'fail-logging-api-url',
|
|
351
|
+
key: 'some-key',
|
|
352
|
+
tenantId: 'some-tenant-id',
|
|
353
|
+
tags: 'some-tags',
|
|
354
|
+
serviceName: 'some-service',
|
|
355
|
+
};
|
|
356
|
+
const logger = new component_logger_1.ComponentLogger(loggerConfig);
|
|
357
|
+
await logger.error('some error message', '123');
|
|
358
|
+
await logger.flush();
|
|
359
|
+
expect(consoleErrorSpy).toBeCalledWith(new Error('logging failed'));
|
|
360
|
+
});
|
|
361
|
+
it.each([
|
|
362
|
+
['background flush', true, ['flush resolved']],
|
|
363
|
+
['foreground flush', false, ['send resolved', 'flush resolved']],
|
|
364
|
+
])('should not await the promise if flush is performed in the background - %s', async (description, background, expectedResolveSequence) => {
|
|
365
|
+
const resolveSequence = [];
|
|
366
|
+
const resolver = jest.fn();
|
|
367
|
+
postSetMock.send.mockImplementation(async () => {
|
|
368
|
+
return new Promise((resolve) => {
|
|
369
|
+
resolver.mockImplementation(() => {
|
|
370
|
+
resolveSequence.push('send resolved');
|
|
371
|
+
resolve(null);
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
});
|
|
375
|
+
const logger = new component_logger_1.ComponentLogger(loggerConfig);
|
|
376
|
+
await logger.error('error message');
|
|
377
|
+
const flushPromise = logger.flush(background).then(() => resolveSequence.push('flush resolved'));
|
|
378
|
+
(0, timers_1.setImmediate)(() => {
|
|
379
|
+
resolver();
|
|
380
|
+
});
|
|
381
|
+
await flushPromise;
|
|
382
|
+
expect(resolveSequence).toEqual(expectedResolveSequence);
|
|
383
|
+
});
|
|
384
|
+
it('should not flush the same log entry multiple times if called concurrently', async () => {
|
|
385
|
+
const logger = new component_logger_1.ComponentLogger(loggerConfig);
|
|
386
|
+
const resolvers = [];
|
|
387
|
+
postSetMock.send.mockImplementation(async () => {
|
|
388
|
+
return new Promise((resolve) => {
|
|
389
|
+
resolvers.push(() => {
|
|
390
|
+
resolve(null);
|
|
391
|
+
});
|
|
392
|
+
});
|
|
393
|
+
});
|
|
394
|
+
await logger.error('error message 1');
|
|
395
|
+
await logger.flush();
|
|
396
|
+
await logger.error('error message 2');
|
|
397
|
+
await logger.flush();
|
|
398
|
+
resolvers.map((resolver) => resolver());
|
|
399
|
+
expect(postSetMock.send).toHaveBeenCalledTimes(2);
|
|
400
|
+
expect(postSetMock.send).toHaveBeenCalledWith([expect.objectContaining({ message: 'error message 1' })]);
|
|
401
|
+
expect(postSetMock.send).toHaveBeenCalledWith([expect.objectContaining({ message: 'error message 2' })]);
|
|
402
|
+
});
|
|
403
|
+
it('should flush logs on next attempt if they failed to flush', async () => {
|
|
404
|
+
const logger = new component_logger_1.ComponentLogger(loggerConfig);
|
|
405
|
+
postSetMock.send.mockRejectedValueOnce(new Error('Log submission failed.')).mockResolvedValue(postSetMock);
|
|
406
|
+
await logger.error('error message 1');
|
|
407
|
+
await logger.flush();
|
|
408
|
+
await logger.error('error message 2');
|
|
409
|
+
await logger.flush();
|
|
410
|
+
expect(postSetMock.send).toHaveBeenCalledTimes(2);
|
|
411
|
+
expect(postSetMock.send).toHaveBeenCalledWith([expect.objectContaining({ message: 'error message 1' })]);
|
|
412
|
+
expect(postSetMock.send).toHaveBeenCalledWith([
|
|
413
|
+
expect.objectContaining({ message: 'error message 1' }),
|
|
414
|
+
expect.objectContaining({ message: 'error message 2' }),
|
|
415
|
+
]);
|
|
416
|
+
});
|
|
327
417
|
});
|
|
328
418
|
//# sourceMappingURL=component-logger.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-logger.spec.js","sourceRoot":"","sources":["../src/component-logger.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component-logger.spec.js","sourceRoot":"","sources":["../src/component-logger.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@squiz/component-logger-lib",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.71.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"private": false,
|
|
@@ -15,14 +15,15 @@
|
|
|
15
15
|
"author": "",
|
|
16
16
|
"license": "ISC",
|
|
17
17
|
"dependencies": {
|
|
18
|
+
"@opentelemetry/api": "^1.6.0",
|
|
18
19
|
"superagent": "^8.0.9"
|
|
19
20
|
},
|
|
20
21
|
"devDependencies": {
|
|
21
22
|
"@squiz/dx-common-lib": "^1.64.0",
|
|
22
|
-
"@types/node": "20.12.
|
|
23
|
+
"@types/node": "20.12.12",
|
|
23
24
|
"dotenv": "^16.0.3",
|
|
24
25
|
"jest": "29.4.1",
|
|
25
26
|
"ts-jest": "29.0.5",
|
|
26
|
-
"ts-node": "10.9.
|
|
27
|
+
"ts-node": "10.9.2"
|
|
27
28
|
}
|
|
28
29
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parseEnvVarForVar } from '@squiz/dx-common-lib';
|
|
2
2
|
import { getComponentLogger } from '.';
|
|
3
3
|
|
|
4
|
-
describe('ComponentLogger', () => {
|
|
4
|
+
describe.skip('ComponentLogger', () => {
|
|
5
5
|
it('should sending log messages', async () => {
|
|
6
6
|
const logger = await getComponentLogger({
|
|
7
7
|
enabled: true,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ComponentLogger, MAX_TAG_LENGTH } from './component-logger';
|
|
1
|
+
import { ComponentLogger, MAX_MESSAGE_LENGTH, MAX_TAG_LENGTH } from './component-logger';
|
|
2
2
|
import { ComponentLoggerConfig } from './component-logger-config';
|
|
3
3
|
import superagent from 'superagent';
|
|
4
|
+
import { setImmediate } from 'timers';
|
|
4
5
|
|
|
5
6
|
const postSetMock = {
|
|
6
7
|
send: jest.fn(),
|
|
@@ -11,7 +12,10 @@ const postMock = {
|
|
|
11
12
|
},
|
|
12
13
|
};
|
|
13
14
|
jest.mock('superagent', () => ({
|
|
14
|
-
post: () => {
|
|
15
|
+
post: (url: string) => {
|
|
16
|
+
if (url === 'fail-logging-api-url') {
|
|
17
|
+
throw Error('logging failed');
|
|
18
|
+
}
|
|
15
19
|
return postMock;
|
|
16
20
|
},
|
|
17
21
|
}));
|
|
@@ -30,12 +34,15 @@ describe('ComponentLogger', () => {
|
|
|
30
34
|
jest.clearAllMocks();
|
|
31
35
|
});
|
|
32
36
|
|
|
37
|
+
const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(jest.fn());
|
|
38
|
+
|
|
33
39
|
beforeAll(() => {
|
|
34
40
|
jest.useFakeTimers();
|
|
35
41
|
jest.setSystemTime(new Date('2023-05-28T00:00:00.000Z'));
|
|
36
42
|
});
|
|
37
43
|
|
|
38
44
|
afterAll(() => {
|
|
45
|
+
consoleErrorSpy.mockReset();
|
|
39
46
|
jest.useRealTimers();
|
|
40
47
|
});
|
|
41
48
|
|
|
@@ -83,8 +90,11 @@ describe('ComponentLogger', () => {
|
|
|
83
90
|
await logger.info('The quick brown fox', '123');
|
|
84
91
|
await logger.flush();
|
|
85
92
|
|
|
86
|
-
expect(postSpy).toBeCalledWith('some-log-url
|
|
87
|
-
expect(postSetSpy).toBeCalledWith(
|
|
93
|
+
expect(postSpy).toBeCalledWith('some-log-url');
|
|
94
|
+
expect(postSetSpy).toBeCalledWith({
|
|
95
|
+
'x-api-key': 'some-key',
|
|
96
|
+
'x-dxp-tenant': 'some-tenant-id',
|
|
97
|
+
});
|
|
88
98
|
});
|
|
89
99
|
|
|
90
100
|
it('should strip off extra "/" on the logUrl', async () => {
|
|
@@ -103,7 +113,7 @@ describe('ComponentLogger', () => {
|
|
|
103
113
|
await logger.info('The quick brown fox', '123');
|
|
104
114
|
await logger.flush();
|
|
105
115
|
|
|
106
|
-
expect(postSpy).toBeCalledWith('some-log-url
|
|
116
|
+
expect(postSpy).toBeCalledWith('some-log-url');
|
|
107
117
|
});
|
|
108
118
|
|
|
109
119
|
it('should not include "tags" in payload if tags is not configured', async () => {
|
|
@@ -376,4 +386,107 @@ describe('ComponentLogger', () => {
|
|
|
376
386
|
];
|
|
377
387
|
expect(postSetMock.send).toBeCalledWith(expectedMessages);
|
|
378
388
|
});
|
|
389
|
+
|
|
390
|
+
it('should truncate long messages', async () => {
|
|
391
|
+
const logger = new ComponentLogger(loggerConfig);
|
|
392
|
+
const message = 'a'.repeat(MAX_MESSAGE_LENGTH + 1);
|
|
393
|
+
|
|
394
|
+
await logger.info(message);
|
|
395
|
+
await logger.flush();
|
|
396
|
+
|
|
397
|
+
expect(postSetMock.send).toHaveBeenCalledWith([
|
|
398
|
+
expect.objectContaining({
|
|
399
|
+
message: message.slice(0, -1),
|
|
400
|
+
}),
|
|
401
|
+
]);
|
|
402
|
+
});
|
|
403
|
+
|
|
404
|
+
it('should not throw error if logging API fails', async () => {
|
|
405
|
+
const loggerConfig = <ComponentLoggerConfig>{
|
|
406
|
+
enabled: true,
|
|
407
|
+
logUrl: 'fail-logging-api-url',
|
|
408
|
+
key: 'some-key',
|
|
409
|
+
tenantId: 'some-tenant-id',
|
|
410
|
+
tags: 'some-tags',
|
|
411
|
+
serviceName: 'some-service',
|
|
412
|
+
};
|
|
413
|
+
const logger = new ComponentLogger(loggerConfig);
|
|
414
|
+
|
|
415
|
+
await logger.error('some error message', '123');
|
|
416
|
+
await logger.flush();
|
|
417
|
+
|
|
418
|
+
expect(consoleErrorSpy).toBeCalledWith(new Error('logging failed'));
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
it.each([
|
|
422
|
+
['background flush', true, ['flush resolved']],
|
|
423
|
+
['foreground flush', false, ['send resolved', 'flush resolved']],
|
|
424
|
+
])(
|
|
425
|
+
'should not await the promise if flush is performed in the background - %s',
|
|
426
|
+
async (description: string, background: boolean, expectedResolveSequence: string[]) => {
|
|
427
|
+
const resolveSequence: string[] = [];
|
|
428
|
+
const resolver = jest.fn();
|
|
429
|
+
|
|
430
|
+
postSetMock.send.mockImplementation(async () => {
|
|
431
|
+
return new Promise((resolve) => {
|
|
432
|
+
resolver.mockImplementation(() => {
|
|
433
|
+
resolveSequence.push('send resolved');
|
|
434
|
+
resolve(null);
|
|
435
|
+
});
|
|
436
|
+
});
|
|
437
|
+
});
|
|
438
|
+
|
|
439
|
+
const logger = new ComponentLogger(loggerConfig);
|
|
440
|
+
await logger.error('error message');
|
|
441
|
+
const flushPromise = logger.flush(background).then(() => resolveSequence.push('flush resolved'));
|
|
442
|
+
|
|
443
|
+
setImmediate(() => {
|
|
444
|
+
resolver();
|
|
445
|
+
});
|
|
446
|
+
await flushPromise;
|
|
447
|
+
|
|
448
|
+
expect(resolveSequence).toEqual(expectedResolveSequence);
|
|
449
|
+
},
|
|
450
|
+
);
|
|
451
|
+
|
|
452
|
+
it('should not flush the same log entry multiple times if called concurrently', async () => {
|
|
453
|
+
const logger = new ComponentLogger(loggerConfig);
|
|
454
|
+
const resolvers: (() => void)[] = [];
|
|
455
|
+
|
|
456
|
+
postSetMock.send.mockImplementation(async () => {
|
|
457
|
+
return new Promise((resolve) => {
|
|
458
|
+
resolvers.push(() => {
|
|
459
|
+
resolve(null);
|
|
460
|
+
});
|
|
461
|
+
});
|
|
462
|
+
});
|
|
463
|
+
|
|
464
|
+
await logger.error('error message 1');
|
|
465
|
+
await logger.flush();
|
|
466
|
+
await logger.error('error message 2');
|
|
467
|
+
await logger.flush();
|
|
468
|
+
resolvers.map((resolver) => resolver());
|
|
469
|
+
|
|
470
|
+
expect(postSetMock.send).toHaveBeenCalledTimes(2);
|
|
471
|
+
expect(postSetMock.send).toHaveBeenCalledWith([expect.objectContaining({ message: 'error message 1' })]);
|
|
472
|
+
expect(postSetMock.send).toHaveBeenCalledWith([expect.objectContaining({ message: 'error message 2' })]);
|
|
473
|
+
});
|
|
474
|
+
|
|
475
|
+
it('should flush logs on next attempt if they failed to flush', async () => {
|
|
476
|
+
const logger = new ComponentLogger(loggerConfig);
|
|
477
|
+
|
|
478
|
+
postSetMock.send.mockRejectedValueOnce(new Error('Log submission failed.')).mockResolvedValue(postSetMock);
|
|
479
|
+
|
|
480
|
+
await logger.error('error message 1');
|
|
481
|
+
await logger.flush();
|
|
482
|
+
await logger.error('error message 2');
|
|
483
|
+
await logger.flush();
|
|
484
|
+
|
|
485
|
+
expect(postSetMock.send).toHaveBeenCalledTimes(2);
|
|
486
|
+
expect(postSetMock.send).toHaveBeenCalledWith([expect.objectContaining({ message: 'error message 1' })]);
|
|
487
|
+
expect(postSetMock.send).toHaveBeenCalledWith([
|
|
488
|
+
expect.objectContaining({ message: 'error message 1' }),
|
|
489
|
+
expect.objectContaining({ message: 'error message 2' }),
|
|
490
|
+
]);
|
|
491
|
+
});
|
|
379
492
|
});
|
package/src/component-logger.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import superagent from 'superagent';
|
|
2
2
|
import { ComponentLogLevel, ComponentLogMessage } from './component-log-message';
|
|
3
3
|
import { ComponentLoggerConfig } from './component-logger-config';
|
|
4
|
+
import { trace } from '@opentelemetry/api';
|
|
4
5
|
|
|
5
6
|
const MESSAGE_BATCH_SIZE = 100;
|
|
7
|
+
export const MAX_MESSAGE_LENGTH = 200000;
|
|
6
8
|
export const MAX_TAG_LENGTH = 200;
|
|
9
|
+
const tracer = trace.getTracer('component-logger-lib:ComponentLogger');
|
|
7
10
|
|
|
8
11
|
export class ComponentLogger {
|
|
9
12
|
private batch: Array<ComponentLogMessage> = [];
|
|
10
13
|
|
|
11
|
-
constructor(readonly config: ComponentLoggerConfig) {
|
|
14
|
+
constructor(private readonly config: ComponentLoggerConfig) {
|
|
12
15
|
if (config.enabled) {
|
|
13
16
|
if (!config.logUrl) {
|
|
14
17
|
throw new Error('config.logUrl is required');
|
|
@@ -50,7 +53,7 @@ export class ComponentLogger {
|
|
|
50
53
|
level: level,
|
|
51
54
|
service: this.config.serviceName,
|
|
52
55
|
timestamp: new Date().toISOString(),
|
|
53
|
-
message: payload,
|
|
56
|
+
message: payload.slice(0, MAX_MESSAGE_LENGTH),
|
|
54
57
|
traceid: traceId,
|
|
55
58
|
userid: userId,
|
|
56
59
|
};
|
|
@@ -80,16 +83,47 @@ export class ComponentLogger {
|
|
|
80
83
|
return tags;
|
|
81
84
|
}
|
|
82
85
|
|
|
83
|
-
async flush(): Promise<void> {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
} catch (err) {
|
|
90
|
-
console.error(err);
|
|
91
|
-
throw err;
|
|
92
|
-
}
|
|
86
|
+
async flush(background: boolean = true): Promise<void> {
|
|
87
|
+
const promise = this.flushInternal();
|
|
88
|
+
|
|
89
|
+
// avoid holding up requests by default, don't await completion.
|
|
90
|
+
if (!background) {
|
|
91
|
+
await promise;
|
|
93
92
|
}
|
|
94
93
|
}
|
|
94
|
+
|
|
95
|
+
private async flushInternal(): Promise<void> {
|
|
96
|
+
if (!this.config.enabled || this.batch.length === 0) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return tracer.startActiveSpan(
|
|
101
|
+
'flush',
|
|
102
|
+
{
|
|
103
|
+
attributes: {
|
|
104
|
+
'batch.length': this.batch.length,
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
async (span) => {
|
|
108
|
+
const logs = this.batch;
|
|
109
|
+
this.batch = [];
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
const url = `${this.config.logUrl.replace(/\/+$/, '')}`;
|
|
113
|
+
await superagent
|
|
114
|
+
.post(url)
|
|
115
|
+
.set({
|
|
116
|
+
'x-dxp-tenant': this.config.tenantId,
|
|
117
|
+
'x-api-key': this.config.key,
|
|
118
|
+
})
|
|
119
|
+
.send(logs);
|
|
120
|
+
} catch (err) {
|
|
121
|
+
this.batch.push(...logs);
|
|
122
|
+
console.error(err);
|
|
123
|
+
} finally {
|
|
124
|
+
span.end();
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
);
|
|
128
|
+
}
|
|
95
129
|
}
|