@squiz/component-logger-lib 1.32.1-alpha.21 → 1.32.1-alpha.25

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.
@@ -3,12 +3,12 @@
3
3
  2 info using node@v18.15.0
4
4
  3 timing npm:load:whichnode Completed in 1ms
5
5
  4 timing config:load:defaults Completed in 2ms
6
- 5 timing config:load:file:/usr/local/lib/node_modules/npm/npmrc Completed in 1ms
6
+ 5 timing config:load:file:/usr/local/lib/node_modules/npm/npmrc Completed in 0ms
7
7
  6 timing config:load:builtin Completed in 1ms
8
8
  7 timing config:load:cli Completed in 1ms
9
9
  8 timing config:load:env Completed in 1ms
10
10
  9 info found workspace root at /builds/developer-experience/cmp
11
- 10 timing config:load:file:/builds/developer-experience/cmp/.npmrc Completed in 0ms
11
+ 10 timing config:load:file:/builds/developer-experience/cmp/.npmrc Completed in 1ms
12
12
  11 timing config:load:project Completed in 20ms
13
13
  12 timing config:load:file:/root/.npmrc Completed in 1ms
14
14
  13 timing config:load:user Completed in 1ms
@@ -24,14 +24,14 @@
24
24
  23 timing npm:load:setTitle Completed in 2ms
25
25
  24 timing config:load:flatten Completed in 4ms
26
26
  25 timing npm:load:display Completed in 5ms
27
- 26 verbose logfile logs-max:10 dir:/builds/developer-experience/cmp/packages/component-logger-lib/.npm/_logs/2023-04-28T04_25_31_555Z-
28
- 27 verbose logfile /builds/developer-experience/cmp/packages/component-logger-lib/.npm/_logs/2023-04-28T04_25_31_555Z-debug-0.log
29
- 28 timing npm:load:logFile Completed in 4ms
27
+ 26 verbose logfile logs-max:10 dir:/builds/developer-experience/cmp/packages/component-logger-lib/.npm/_logs/2023-05-01T20_17_20_890Z-
28
+ 27 verbose logfile /builds/developer-experience/cmp/packages/component-logger-lib/.npm/_logs/2023-05-01T20_17_20_890Z-debug-0.log
29
+ 28 timing npm:load:logFile Completed in 3ms
30
30
  29 timing npm:load:timers Completed in 0ms
31
31
  30 timing npm:load:configScope Completed in 0ms
32
32
  31 timing npm:load Completed in 42ms
33
33
  32 silly logfile done cleaning log files
34
- 33 timing command:run Completed in 1938ms
34
+ 33 timing command:run Completed in 2708ms
35
35
  34 verbose exit 0
36
- 35 timing npm Completed in 1995ms
36
+ 35 timing npm Completed in 2763ms
37
37
  36 info ok
@@ -0,0 +1,15 @@
1
+ import type { Config } from 'jest';
2
+ import { config as dotEnvConfig } from 'dotenv';
3
+
4
+ dotEnvConfig();
5
+
6
+ // Sync object
7
+ const config: Config = {
8
+ preset: 'ts-jest',
9
+ testTimeout: 60_000,
10
+ testEnvironment: 'node',
11
+ testRegex: '.*\\.integration\\.spec\\.ts$',
12
+ maxWorkers: 1,
13
+ };
14
+
15
+ export default config;
@@ -5,5 +5,5 @@ export interface ComponentLogMessage {
5
5
  timestamp: string;
6
6
  message: string;
7
7
  tags?: string;
8
- traceId?: string;
8
+ traceid?: string;
9
9
  }
@@ -1,7 +1,7 @@
1
1
  export interface ComponentLoggerConfig {
2
2
  enabled: boolean;
3
- logUrl?: string;
4
- key?: string;
5
- tenantId?: string;
3
+ logUrl: string;
4
+ key: string;
5
+ tenantId: string;
6
6
  tags?: string;
7
7
  }
@@ -8,6 +8,6 @@ export declare class ComponentLogger {
8
8
  info(message: string | any, traceId?: string): Promise<void>;
9
9
  warn(message: string | any, traceId?: string): Promise<void>;
10
10
  error(message: string | any, traceId?: string): Promise<void>;
11
- append(level: ComponentLogLevel, message: string | any, traceId?: string): Promise<void>;
11
+ protected append(level: ComponentLogLevel, message: string | any, traceId?: string): Promise<void>;
12
12
  flush(): Promise<void>;
13
13
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const dx_common_lib_1 = require("@squiz/dx-common-lib");
4
+ const _1 = require(".");
5
+ describe('ComponentLogger', () => {
6
+ it('should sending log messages', async () => {
7
+ const logger = await (0, _1.getComponentLogger)({
8
+ enabled: true,
9
+ tenantId: 'integration-test',
10
+ accessCredentials: (0, dx_common_lib_1.parseEnvVarForVar)('LOGGING_SERVICE_API_CREDENTIALS'),
11
+ tags: 'env:dev integration-test',
12
+ });
13
+ await logger.info('The quick brown fox', '123');
14
+ await logger.flush();
15
+ });
16
+ });
17
+ //# sourceMappingURL=component-logger.integration.spec.js.map
@@ -0,0 +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;IAC/B,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;SACjC,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"}
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ComponentLogger = void 0;
7
7
  const superagent_1 = __importDefault(require("superagent"));
8
+ const MESSAGE_BATCH_SIZE = 100;
8
9
  class ComponentLogger {
9
10
  constructor(config) {
10
11
  this.config = config;
@@ -41,18 +42,18 @@ class ComponentLogger {
41
42
  timestamp: new Date().toISOString(),
42
43
  message: payload,
43
44
  tags: this.config.tags,
44
- traceId: traceId,
45
+ traceid: traceId,
45
46
  });
46
- if (this.batch.length == 100) {
47
+ if (this.batch.length == MESSAGE_BATCH_SIZE) {
47
48
  await this.flush();
48
- this.batch = [];
49
49
  }
50
50
  }
51
51
  async flush() {
52
52
  if (this.config.enabled && this.batch.length > 0) {
53
53
  try {
54
- const url = `${this.config.logUrl}/${this.config.tenantId}`;
55
- await superagent_1.default.post(url).set('X-API-Key', this.config.key).send(this.batch);
54
+ const url = `${this.config.logUrl.replace(/\/+$/, '')}/${this.config.tenantId}`;
55
+ await superagent_1.default.post(url).set('x-api-key', this.config.key).send(this.batch);
56
+ this.batch = [];
56
57
  }
57
58
  catch (err) {
58
59
  console.error(err);
@@ -1 +1 @@
1
- {"version":3,"file":"component-logger.js","sourceRoot":"","sources":["../src/component-logger.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAoC;AAIpC,MAAa,eAAe;IAG1B,YAAqB,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;QAF1C,UAAK,GAA+B,EAAE,CAAC;QAG7C,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;aAC9C;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;aAC3C;YACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;SACF;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAqB,EAAE,OAAgB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAqB,EAAE,OAAgB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAqB,EAAE,OAAgB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAqB,EAAE,OAAgB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAwB,EAAE,OAAqB,EAAE,OAAgB;QAC5E,MAAM,OAAO,GAAG,OAAO,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE/E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,gBAAgB;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;YAC5B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACjB;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,IAAI;gBACF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC5D,MAAM,oBAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAChF;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,MAAM,GAAG,CAAC;aACX;SACF;IACH,CAAC;CACF;AA9DD,0CA8DC"}
1
+ {"version":3,"file":"component-logger.js","sourceRoot":"","sources":["../src/component-logger.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAoC;AAIpC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAa,eAAe;IAG1B,YAAqB,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;QAF1C,UAAK,GAA+B,EAAE,CAAC;QAG7C,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;aAC9C;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;aAC3C;YACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;SACF;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAqB,EAAE,OAAgB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAqB,EAAE,OAAgB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAqB,EAAE,OAAgB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAqB,EAAE,OAAgB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAES,KAAK,CAAC,MAAM,CAAC,KAAwB,EAAE,OAAqB,EAAE,OAAgB;QACtF,MAAM,OAAO,GAAG,OAAO,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE/E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,gBAAgB;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,kBAAkB,EAAE;YAC3C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;SACpB;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,IAAI;gBACF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAChF,MAAM,oBAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9E,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;aACjB;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,MAAM,GAAG,CAAC;aACX;SACF;IACH,CAAC;CACF;AA9DD,0CA8DC"}
@@ -1,42 +1,223 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
6
  const component_logger_1 = require("./component-logger");
27
- const process = __importStar(require("process"));
7
+ const superagent_1 = __importDefault(require("superagent"));
8
+ const postSetMock = {
9
+ send: jest.fn(),
10
+ };
11
+ const postMock = {
12
+ set: () => {
13
+ return postSetMock;
14
+ },
15
+ };
16
+ jest.mock('superagent', () => ({
17
+ post: () => {
18
+ return postMock;
19
+ },
20
+ }));
21
+ const loggerConfig = {
22
+ enabled: true,
23
+ logUrl: 'some-log-url',
24
+ key: 'some-key',
25
+ tenantId: 'some-tenant-id',
26
+ tags: 'some-tags',
27
+ };
28
28
  describe('ComponentLogger', () => {
29
- it('should allow sending log messages', async () => {
29
+ afterEach(() => {
30
+ jest.clearAllMocks();
31
+ });
32
+ beforeAll(() => {
33
+ jest.useFakeTimers();
34
+ jest.setSystemTime(new Date('2023-05-28T00:00:00.000Z'));
35
+ });
36
+ afterAll(() => {
37
+ jest.useRealTimers();
38
+ });
39
+ it('should throw error if config.logUrl is not set', async () => {
40
+ const loggerConfig = {
41
+ enabled: true,
42
+ logUrl: '',
43
+ key: 'some-key',
44
+ tenantId: 'some-tenant-id',
45
+ tags: 'some-tags',
46
+ };
47
+ expect(() => new component_logger_1.ComponentLogger(loggerConfig)).toThrow('config.logUrl is required');
48
+ });
49
+ it('should throw error if config.key is not set', async () => {
30
50
  const config = {
31
- enabled: JSON.parse((process.env.COMPONENT_LOGGER_ENABLED || 'false').toLocaleLowerCase()),
32
- logUrl: process.env.COMPONENT_LOGGER_URL,
33
- key: process.env.COMPONENT_LOGGER_KEY,
34
- tenantId: process.env.COMPONENT_LOGGER_TENANT_ID,
35
- tags: process.env.COMPONENT_LOGGER_TAGS,
51
+ enabled: true,
52
+ logUrl: 'some-log-url',
53
+ key: '',
54
+ tenantId: 'some-tenant-id',
55
+ tags: 'some-tags',
56
+ };
57
+ expect(() => new component_logger_1.ComponentLogger(config)).toThrow('config.key is required');
58
+ });
59
+ it('should throw error if config.tenantId is not set', async () => {
60
+ const loggerConfig = {
61
+ enabled: true,
62
+ logUrl: 'some-log-url',
63
+ key: 'some-key',
64
+ tenantId: '',
65
+ tags: 'some-tags',
66
+ };
67
+ expect(() => new component_logger_1.ComponentLogger(loggerConfig)).toThrow('config.tenantId is required');
68
+ });
69
+ it('should set correct log service URL and API key', async () => {
70
+ const postSpy = jest.spyOn(superagent_1.default, 'post');
71
+ const postSetSpy = jest.spyOn(postMock, 'set');
72
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
73
+ await logger.info('The quick brown fox', '123');
74
+ await logger.flush();
75
+ expect(postSpy).toBeCalledWith('some-log-url/some-tenant-id');
76
+ expect(postSetSpy).toBeCalledWith('x-api-key', 'some-key');
77
+ });
78
+ it('should strip off extra "/" on the logUrl', async () => {
79
+ const loggerConfig = {
80
+ enabled: true,
81
+ logUrl: 'some-log-url/',
82
+ key: 'some-key',
83
+ tenantId: 'some-tenant-id',
84
+ tags: 'some-tags',
85
+ };
86
+ const postSpy = jest.spyOn(superagent_1.default, 'post');
87
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
88
+ await logger.info('The quick brown fox', '123');
89
+ await logger.flush();
90
+ expect(postSpy).toBeCalledWith('some-log-url/some-tenant-id');
91
+ });
92
+ it('should not send message if disabled', async () => {
93
+ const loggerConfig = {
94
+ enabled: false,
95
+ logUrl: 'some-log-url',
96
+ key: 'some-key',
97
+ tenantId: 'some-tenant-id',
98
+ tags: 'some-tags',
36
99
  };
37
- const logger = new component_logger_1.ComponentLogger(config);
100
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
101
+ await logger.warn('this message wont be sent', '123');
102
+ await logger.flush();
103
+ expect(postSetMock.send).toBeCalledTimes(0);
104
+ });
105
+ it('should send the log messages in batch', async () => {
106
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
107
+ await logger.info('The quick brown fox 1', '123');
108
+ await logger.info('The quick brown fox 2', '124');
109
+ await logger.flush();
110
+ const expectedMessages = [
111
+ {
112
+ level: 'INFO',
113
+ service: 'render-runtime',
114
+ timestamp: '2023-05-28T00:00:00.000Z',
115
+ message: 'The quick brown fox 1',
116
+ tags: 'some-tags',
117
+ traceid: '123',
118
+ },
119
+ {
120
+ level: 'INFO',
121
+ service: 'render-runtime',
122
+ timestamp: '2023-05-28T00:00:00.000Z',
123
+ message: 'The quick brown fox 2',
124
+ tags: 'some-tags',
125
+ traceid: '124',
126
+ },
127
+ ];
128
+ expect(postSetMock.send).toBeCalledWith(expectedMessages);
129
+ });
130
+ it('should json encode the message if not string', async () => {
131
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
132
+ await logger.warn(['this', 'is', 'not string'], '123');
133
+ await logger.flush();
134
+ const expectedMessages = [
135
+ {
136
+ level: 'WARN',
137
+ service: 'render-runtime',
138
+ timestamp: '2023-05-28T00:00:00.000Z',
139
+ message: '["this","is","not string"]',
140
+ tags: 'some-tags',
141
+ traceid: '123',
142
+ },
143
+ ];
144
+ expect(postSetMock.send).toBeCalledWith(expectedMessages);
145
+ });
146
+ it('should not send message if there is nothing the message queue', async () => {
147
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
148
+ await logger.flush();
149
+ expect(postSetMock.send).toBeCalledTimes(0);
150
+ });
151
+ it('should clear the message queue after sending the message', async () => {
152
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
38
153
  await logger.info('The quick brown fox', '123');
154
+ // flushing the log messages again should trigger send only once
155
+ await logger.flush();
156
+ await logger.flush();
157
+ await logger.flush();
158
+ await logger.flush();
159
+ expect(postSetMock.send).toBeCalledTimes(1);
160
+ });
161
+ it('should not send message till queue reaching the max message count', async () => {
162
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
163
+ await logger.info('The quick brown fox', '123');
164
+ expect(postSetMock.send).toBeCalledTimes(0);
165
+ });
166
+ it('should automatically flush the queue after reaching the max message count', async () => {
167
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
168
+ for (let count = 0; count <= 100; count++) {
169
+ await logger.info('The quick brown fox', `${count}`);
170
+ }
171
+ // this should send all 100 messages above in a single go
172
+ expect(postSetMock.send).toBeCalledTimes(1);
173
+ });
174
+ it('should send debug message', async () => {
175
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
176
+ await logger.debug('some debug message', '123');
177
+ await logger.flush();
178
+ const expectedMessages = [
179
+ {
180
+ level: 'DEBUG',
181
+ service: 'render-runtime',
182
+ timestamp: '2023-05-28T00:00:00.000Z',
183
+ message: 'some debug message',
184
+ tags: 'some-tags',
185
+ traceid: '123',
186
+ },
187
+ ];
188
+ expect(postSetMock.send).toBeCalledWith(expectedMessages);
189
+ });
190
+ it('should send warn message', async () => {
191
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
192
+ await logger.warn('some warn message', '123');
193
+ await logger.flush();
194
+ const expectedMessages = [
195
+ {
196
+ level: 'WARN',
197
+ service: 'render-runtime',
198
+ timestamp: '2023-05-28T00:00:00.000Z',
199
+ message: 'some warn message',
200
+ tags: 'some-tags',
201
+ traceid: '123',
202
+ },
203
+ ];
204
+ expect(postSetMock.send).toBeCalledWith(expectedMessages);
205
+ });
206
+ it('should send error message', async () => {
207
+ const logger = new component_logger_1.ComponentLogger(loggerConfig);
208
+ await logger.error('some error message', '123');
39
209
  await logger.flush();
210
+ const expectedMessages = [
211
+ {
212
+ level: 'ERROR',
213
+ service: 'render-runtime',
214
+ timestamp: '2023-05-28T00:00:00.000Z',
215
+ message: 'some error message',
216
+ tags: 'some-tags',
217
+ traceid: '123',
218
+ },
219
+ ];
220
+ expect(postSetMock.send).toBeCalledWith(expectedMessages);
40
221
  });
41
222
  });
42
223
  //# 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":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAqD;AAErD,iDAAmC;AAEnC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,MAAM,GAA0B;YACpC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,CAAC,CAAC,iBAAiB,EAAE,CAAC;YAC1F,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YACxC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YACrC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;YAChD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;SACxC,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,kCAAe,CAAC,MAAM,CAAC,CAAC;QAE3C,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"}
1
+ {"version":3,"file":"component-logger.spec.js","sourceRoot":"","sources":["../src/component-logger.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ComponentLogger } from './component-logger';
2
+ export declare function getComponentLogger(config: {
3
+ enabled: boolean;
4
+ tenantId: string;
5
+ accessSecret?: string | false | undefined;
6
+ accessCredentials?: string | false | undefined;
7
+ tags: string;
8
+ }): Promise<ComponentLogger>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getComponentLogger = void 0;
4
+ const component_logger_1 = require("./component-logger");
5
+ const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
6
+ async function getComponentLogger(config) {
7
+ if (config.accessSecret && config.accessCredentials) {
8
+ throw new Error('Only either of Logging Service API accessSecret or accessCredentials should be provided');
9
+ }
10
+ let apiAccessString = '';
11
+ if (config.enabled) {
12
+ if (config.accessCredentials) {
13
+ apiAccessString = config.accessCredentials;
14
+ }
15
+ else if (config.accessSecret) {
16
+ apiAccessString = await getSecretString(config.accessSecret);
17
+ }
18
+ }
19
+ let apiAccessInfo = {
20
+ url: '',
21
+ key: '',
22
+ };
23
+ if (apiAccessString.length) {
24
+ apiAccessInfo = JSON.parse(apiAccessString);
25
+ }
26
+ return new component_logger_1.ComponentLogger({
27
+ enabled: config.enabled,
28
+ tenantId: config.tenantId,
29
+ logUrl: apiAccessInfo.url,
30
+ key: apiAccessInfo.key,
31
+ tags: config.tags,
32
+ });
33
+ }
34
+ exports.getComponentLogger = getComponentLogger;
35
+ async function getSecretString(id) {
36
+ const client = new client_secrets_manager_1.SecretsManagerClient({});
37
+ const result = await client.send(new client_secrets_manager_1.GetSecretValueCommand({ SecretId: id }));
38
+ if (result.SecretString === undefined) {
39
+ throw new Error(`Secret ${id} could not be found`);
40
+ }
41
+ return result.SecretString;
42
+ }
43
+ //# sourceMappingURL=getComponentLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getComponentLogger.js","sourceRoot":"","sources":["../src/getComponentLogger.ts"],"names":[],"mappings":";;;AAAA,yDAAqD;AACrD,4EAA8F;AAOvF,KAAK,UAAU,kBAAkB,CAAC,MAMxC;IACC,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,iBAAiB,EAAE;QACnD,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;KAC5G;IAED,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,MAAM,CAAC,OAAO,EAAE;QAClB,IAAI,MAAM,CAAC,iBAAiB,EAAE;YAC5B,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;SAC5C;aAAM,IAAI,MAAM,CAAC,YAAY,EAAE;YAC9B,eAAe,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC9D;KACF;IACD,IAAI,aAAa,GAAkB;QACjC,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;KACR,CAAC;IACF,IAAI,eAAe,CAAC,MAAM,EAAE;QAC1B,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;KAC7C;IAED,OAAO,IAAI,kCAAe,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,aAAa,CAAC,GAAG;QACzB,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAC;AACL,CAAC;AAlCD,gDAkCC;AAED,KAAK,UAAU,eAAe,CAAC,EAAU;IACvC,MAAM,MAAM,GAAG,IAAI,6CAAoB,CAAC,EAAE,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,8CAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAE9E,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;KACpD;IAED,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const getComponentLogger_1 = require("./getComponentLogger");
4
+ describe('getComponentLogger', () => {
5
+ it('should return the logger object', async () => {
6
+ const logger = await (0, getComponentLogger_1.getComponentLogger)({
7
+ enabled: false,
8
+ accessCredentials: JSON.stringify({
9
+ url: 'some-url',
10
+ key: 'some-key',
11
+ }),
12
+ tags: 'some-tags',
13
+ tenantId: 'some-tenant-id',
14
+ });
15
+ expect(logger).toBeTruthy();
16
+ });
17
+ it('should throw error if both accessSecret and accessCredential is provided', async () => {
18
+ const logger = (0, getComponentLogger_1.getComponentLogger)({
19
+ enabled: false,
20
+ accessSecret: 'some-access-secret',
21
+ accessCredentials: 'some-access-creds',
22
+ tags: 'some-tags',
23
+ tenantId: 'some-tenant-id',
24
+ });
25
+ await expect(logger).rejects.toThrowError('Only either of Logging Service API accessSecret or accessCredentials should be provided');
26
+ });
27
+ });
28
+ //# sourceMappingURL=getComponentLogger.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getComponentLogger.spec.js","sourceRoot":"","sources":["../src/getComponentLogger.spec.ts"],"names":[],"mappings":";;AAAA,6DAA0D;AAG1D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,GAAoB,MAAM,IAAA,uCAAkB,EAAC;YACvD,OAAO,EAAE,KAAK;YACd,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC;gBAChC,GAAG,EAAE,UAAU;gBACf,GAAG,EAAE,UAAU;aAChB,CAAC;YACF,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,gBAAgB;SAC3B,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,MAAM,GAAG,IAAA,uCAAkB,EAAC;YAChC,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,oBAAoB;YAClC,iBAAiB,EAAE,mBAAmB;YACtC,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,gBAAgB;SAC3B,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,CACvC,yFAAyF,CAC1F,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/lib/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export { ComponentLogger } from './component-logger';
2
+ export { getComponentLogger } from './getComponentLogger';
package/lib/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ComponentLogger = void 0;
3
+ exports.getComponentLogger = exports.ComponentLogger = void 0;
4
4
  var component_logger_1 = require("./component-logger");
5
5
  Object.defineProperty(exports, "ComponentLogger", { enumerable: true, get: function () { return component_logger_1.ComponentLogger; } });
6
+ var getComponentLogger_1 = require("./getComponentLogger");
7
+ Object.defineProperty(exports, "getComponentLogger", { enumerable: true, get: function () { return getComponentLogger_1.getComponentLogger; } });
6
8
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@squiz/component-logger-lib",
3
- "version": "1.32.1-alpha.21",
3
+ "version": "1.32.1-alpha.25",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
7
- "test": "jest --passWithNoTests",
7
+ "test": "jest -c jest.config.ts",
8
+ "test:integration": "jest -c jest.integration.config.ts",
8
9
  "compile": "tsc"
9
10
  },
10
11
  "author": "",
@@ -13,11 +14,12 @@
13
14
  "superagent": "^8.0.9"
14
15
  },
15
16
  "devDependencies": {
17
+ "@squiz/dx-common-lib": "1.32.1-alpha.19",
16
18
  "@types/node": "18.15.2",
17
19
  "dotenv": "^16.0.3",
18
20
  "jest": "29.4.1",
19
21
  "ts-jest": "29.0.5",
20
22
  "ts-node": "10.9.1"
21
23
  },
22
- "gitHead": "c197f8d0d9e326d6a3fcaa5c417d3918a4a62234"
24
+ "gitHead": "cd1dce796887c2f5dd7ca3f9f6c3166787e395b3"
23
25
  }
@@ -6,5 +6,5 @@ export interface ComponentLogMessage {
6
6
  timestamp: string;
7
7
  message: string;
8
8
  tags?: string;
9
- traceId?: string;
9
+ traceid?: string;
10
10
  }
@@ -1,7 +1,7 @@
1
1
  export interface ComponentLoggerConfig {
2
2
  enabled: boolean;
3
- logUrl?: string;
4
- key?: string;
5
- tenantId?: string;
3
+ logUrl: string;
4
+ key: string;
5
+ tenantId: string;
6
6
  tags?: string; //TODO: Probably should be an array of key-value pairs?
7
7
  }
@@ -0,0 +1,16 @@
1
+ import { parseEnvVarForVar } from '@squiz/dx-common-lib';
2
+ import { getComponentLogger } from '.';
3
+
4
+ describe('ComponentLogger', () => {
5
+ it('should sending log messages', async () => {
6
+ const logger = await getComponentLogger({
7
+ enabled: true,
8
+ tenantId: 'integration-test',
9
+ accessCredentials: parseEnvVarForVar('LOGGING_SERVICE_API_CREDENTIALS'),
10
+ tags: 'env:dev integration-test',
11
+ });
12
+
13
+ await logger.info('The quick brown fox', '123');
14
+ await logger.flush();
15
+ });
16
+ });