@squiz/component-logger-lib 1.32.1-alpha.22 → 1.32.1-alpha.26

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.
@@ -1,37 +1,37 @@
1
1
  0 verbose cli /usr/local/bin/node /usr/local/bin/npm
2
2
  1 info using npm@9.5.0
3
3
  2 info using node@v18.15.0
4
- 3 timing npm:load:whichnode Completed in 2ms
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
7
- 6 timing config:load:builtin Completed in 1ms
4
+ 3 timing npm:load:whichnode Completed in 1ms
5
+ 4 timing config:load:defaults Completed in 3ms
6
+ 5 timing config:load:file:/usr/local/lib/node_modules/npm/npmrc Completed in 0ms
7
+ 6 timing config:load:builtin Completed in 0ms
8
8
  7 timing config:load:cli Completed in 2ms
9
- 8 timing config:load:env Completed in 1ms
9
+ 8 timing config:load:env Completed in 2ms
10
10
  9 info found workspace root at /builds/developer-experience/cmp
11
11
  10 timing config:load:file:/builds/developer-experience/cmp/.npmrc Completed in 0ms
12
12
  11 timing config:load:project Completed in 20ms
13
- 12 timing config:load:file:/root/.npmrc Completed in 0ms
14
- 13 timing config:load:user Completed in 2ms
15
- 14 timing config:load:file:/usr/local/etc/npmrc Completed in 0ms
16
- 15 timing config:load:global Completed in 0ms
13
+ 12 timing config:load:file:/root/.npmrc Completed in 1ms
14
+ 13 timing config:load:user Completed in 1ms
15
+ 14 timing config:load:file:/usr/local/etc/npmrc Completed in 1ms
16
+ 15 timing config:load:global Completed in 1ms
17
17
  16 timing config:load:setEnvs Completed in 1ms
18
- 17 timing config:load Completed in 29ms
19
- 18 timing npm:load:configload Completed in 29ms
20
- 19 timing npm:load:mkdirpcache Completed in 1ms
21
- 20 timing npm:load:mkdirplogs Completed in 0ms
18
+ 17 timing config:load Completed in 30ms
19
+ 18 timing npm:load:configload Completed in 30ms
20
+ 19 timing npm:load:mkdirpcache Completed in 0ms
21
+ 20 timing npm:load:mkdirplogs Completed in 1ms
22
22
  21 verbose title npm run compile
23
23
  22 verbose argv "run" "compile" "--"
24
24
  23 timing npm:load:setTitle Completed in 1ms
25
- 24 timing config:load:flatten Completed in 4ms
25
+ 24 timing config:load:flatten Completed in 5ms
26
26
  25 timing npm:load:display Completed in 6ms
27
- 26 verbose logfile logs-max:10 dir:/builds/developer-experience/cmp/packages/component-logger-lib/.npm/_logs/2023-04-28T06_34_24_877Z-
28
- 27 verbose logfile /builds/developer-experience/cmp/packages/component-logger-lib/.npm/_logs/2023-04-28T06_34_24_877Z-debug-0.log
27
+ 26 verbose logfile logs-max:10 dir:/builds/developer-experience/cmp/packages/component-logger-lib/.npm/_logs/2023-05-03T01_21_21_355Z-
28
+ 27 verbose logfile /builds/developer-experience/cmp/packages/component-logger-lib/.npm/_logs/2023-05-03T01_21_21_355Z-debug-0.log
29
29
  28 timing npm:load:logFile Completed in 4ms
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 43ms
33
33
  32 silly logfile done cleaning log files
34
- 33 timing command:run Completed in 2253ms
34
+ 33 timing command:run Completed in 4267ms
35
35
  34 verbose exit 0
36
- 35 timing npm Completed in 2308ms
36
+ 35 timing npm Completed in 4327ms
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.22",
3
+ "version": "1.32.1-alpha.26",
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": "2ad540de21c3f73986bae9aed062a44e34521b75"
24
+ "gitHead": "a87ea107611743ec410eb21fc4f20d23cefb06f7"
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
+ });