@rsdk/logging 4.0.1-next.0 → 4.0.1-next.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/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.0.1-next.2](https://github.com/R-Vision/rsdk/compare/v4.0.1-next.1...v4.0.1-next.2) (2023-12-07)
7
+
8
+ ### Bug Fixes
9
+
10
+ * **db:** added queued initialization db context ([#169](https://github.com/R-Vision/rsdk/issues/169)) ([ea481ed](https://github.com/R-Vision/rsdk/commit/ea481edce9bbc7bd702fc046a37fb5a5580a88dd))
11
+
12
+ ## [4.0.1-next.1](https://github.com/R-Vision/rsdk/compare/v4.0.0...v4.0.1-next.1) (2023-12-06)
13
+
14
+ **Note:** Version bump only for package @rsdk/logging
15
+
6
16
  ## [4.0.1-next.0](https://github.com/R-Vision/rsdk/compare/v4.0.0...v4.0.1-next.0) (2023-12-06)
7
17
 
8
18
  **Note:** Version bump only for package @rsdk/logging
@@ -5,6 +5,14 @@ import type { LoggerOptions, LoggingContext, OnMessage } from './types';
5
5
  * Фабрика является статической потому что
6
6
  */
7
7
  export declare class LoggerFactory {
8
+ /**
9
+ * Переконфигурация pino нужна потому, что изначально логгер инициализируется
10
+ * с дефолтными настройками, т. к. конфигурация ещё не прочитана.
11
+ *
12
+ * FIXME: Это грязно. Надо придумать решение получше.
13
+ * @param opts Опции логгер
14
+ */
15
+ static reconfigure(opts: Partial<LoggerOptions>): void;
8
16
  /**
9
17
  * Under the hood every logger instance will use this
10
18
  * static instance. Motivation for this is that it's much
@@ -16,7 +24,21 @@ export declare class LoggerFactory {
16
24
  */
17
25
  private static _globalPino;
18
26
  private static events;
19
- static reconfigure(opts: LoggerOptions): void;
27
+ /**
28
+ * Этот метод должен быть вызван после того, как подключен instrumentation-pino.
29
+ * Пакет instrumentation-pino модифицирует require. Согласно предполагаемому автором
30
+ * библиотеки сценарию использования, нужно сначала выполнять эту модификацию, а
31
+ * уже потом делать require(import) pino.
32
+ *
33
+ * У нас pino импортируется раньше - на этапе сборки NestContainer. Мы не можем
34
+ * воткнуть auto-instrumentation-node вперёд инициализации контейнера потому,
35
+ * что мы хотим, чтобы подключение инструментирование зависело от настройки
36
+ * TRACING_ENABLED. Т. е. нас сначала нужно полностью инициализировать систему
37
+ * конфигурации, а уже потом решать - делать инструментирование или нет.
38
+ */
39
+ static applyInstrumentations(): void;
40
+ private static opts;
20
41
  static onMessage(handler: OnMessage): void;
21
42
  static create(context: LoggingContext): ILogger;
43
+ private static applyOptions;
22
44
  }
@@ -13,6 +13,18 @@ const implementations_1 = require("./implementations");
13
13
  * Фабрика является статической потому что
14
14
  */
15
15
  class LoggerFactory {
16
+ /**
17
+ * Переконфигурация pino нужна потому, что изначально логгер инициализируется
18
+ * с дефолтными настройками, т. к. конфигурация ещё не прочитана.
19
+ *
20
+ * FIXME: Это грязно. Надо придумать решение получше.
21
+ * @param opts Опции логгер
22
+ */
23
+ static reconfigure(opts) {
24
+ this.applyOptions(opts);
25
+ const { stream, ...other } = this.opts;
26
+ this._globalPino = (0, pino_1.default)(other, stream);
27
+ }
16
28
  /**
17
29
  * Under the hood every logger instance will use this
18
30
  * static instance. Motivation for this is that it's much
@@ -27,20 +39,38 @@ class LoggerFactory {
27
39
  });
28
40
  // eslint-disable-next-line unicorn/prefer-event-target
29
41
  static events = new node_events_1.default();
30
- static reconfigure(opts) {
31
- const { redact, level, stream = pino_1.default.destination() } = opts;
32
- // eslint-disable-next-line @typescript-eslint/no-var-requires,unicorn/prefer-module
33
- this._globalPino = (0, pino_1.default)({
34
- level: level ?? defaults_1.DEFAULT_LEVEL,
35
- ...(redact && { redact }),
36
- }, stream);
42
+ /**
43
+ * Этот метод должен быть вызван после того, как подключен instrumentation-pino.
44
+ * Пакет instrumentation-pino модифицирует require. Согласно предполагаемому автором
45
+ * библиотеки сценарию использования, нужно сначала выполнять эту модификацию, а
46
+ * уже потом делать require(import) pino.
47
+ *
48
+ * У нас pino импортируется раньше - на этапе сборки NestContainer. Мы не можем
49
+ * воткнуть auto-instrumentation-node вперёд инициализации контейнера потому,
50
+ * что мы хотим, чтобы подключение инструментирование зависело от настройки
51
+ * TRACING_ENABLED. Т. е. нас сначала нужно полностью инициализировать систему
52
+ * конфигурации, а уже потом решать - делать инструментирование или нет.
53
+ */
54
+ static applyInstrumentations() {
55
+ const { stream, ...other } = this.opts;
56
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
57
+ this._globalPino = require('pino')(other, stream);
37
58
  }
59
+ static opts = {
60
+ level: defaults_1.DEFAULT_LEVEL,
61
+ redact: [],
62
+ stream: pino_1.default.destination(),
63
+ };
38
64
  static onMessage(handler) {
39
65
  this.events.on('msg', handler);
40
66
  }
41
67
  static create(context) {
42
68
  return new implementations_1.PinoLogger(() => this._globalPino, (level, data) => this.events.emit('msg', level, data), context);
43
69
  }
70
+ static applyOptions(opts) {
71
+ const { redact, level, stream = pino_1.default.destination() } = opts || {};
72
+ Object.assign(this.opts, { redact, level: level ?? defaults_1.DEFAULT_LEVEL, stream });
73
+ }
44
74
  }
45
75
  exports.LoggerFactory = LoggerFactory;
46
76
  //# sourceMappingURL=logger.factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.factory.js","sourceRoot":"","sources":["../src/logger.factory.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAuC;AAEvC,gDAAwB;AAExB,yCAA2C;AAC3C,uDAA+C;AAS/C;;;GAGG;AACH,MAAa,aAAa;IACxB;;;;;;;;OAQG;IACK,MAAM,CAAC,WAAW,GAAS,IAAA,cAAI,EAAC;QACtC,KAAK,EAAE,wBAAa;KACrB,CAAC,CAAC;IAEH,uDAAuD;IAC/C,MAAM,CAAC,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;IAE3C,MAAM,CAAC,WAAW,CAAC,IAAmB;QACpC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAI,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC;QAE5D,oFAAoF;QACpF,IAAI,CAAC,WAAW,GAAG,IAAA,cAAI,EACrB;YACE,KAAK,EAAE,KAAK,IAAI,wBAAa;YAC7B,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;SAC1B,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,OAAkB;QACjC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAuB;QACnC,OAAO,IAAI,4BAAU,CACnB,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EACtB,CAAC,KAAe,EAAE,IAAa,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EACxE,OAAO,CACR,CAAC;IACJ,CAAC;;AAxCH,sCAyCC"}
1
+ {"version":3,"file":"logger.factory.js","sourceRoot":"","sources":["../src/logger.factory.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAuC;AAEvC,gDAAwB;AAExB,yCAA2C;AAC3C,uDAA+C;AAS/C;;;GAGG;AACH,MAAa,aAAa;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,IAA4B;QAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAExB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvC,IAAI,CAAC,WAAW,GAAG,IAAA,cAAI,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;OAQG;IACK,MAAM,CAAC,WAAW,GAAS,IAAA,cAAI,EAAC;QACtC,KAAK,EAAE,wBAAa;KACrB,CAAC,CAAC;IAEH,uDAAuD;IAC/C,MAAM,CAAC,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;IAE3C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,qBAAqB;QAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvC,8DAA8D;QAC9D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAEO,MAAM,CAAC,IAAI,GAAkB;QACnC,KAAK,EAAE,wBAAa;QACpB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,cAAI,CAAC,WAAW,EAAE;KAC3B,CAAC;IAEF,MAAM,CAAC,SAAS,CAAC,OAAkB;QACjC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAuB;QACnC,OAAO,IAAI,4BAAU,CACnB,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EACtB,CAAC,KAAe,EAAE,IAAa,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EACxE,OAAO,CACR,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,IAA4B;QACtD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAI,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;QAElE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,wBAAa,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;;AAzEH,sCA0EC"}
package/dist/types.d.ts CHANGED
@@ -10,9 +10,9 @@ export declare enum LogLevel {
10
10
  }
11
11
  export type Params = Record<string, unknown>;
12
12
  export interface LoggerOptions {
13
- level?: LogLevel;
14
- redact?: string[];
15
- stream?: pino.DestinationStream;
13
+ level: LogLevel;
14
+ redact: string[];
15
+ stream: pino.DestinationStream;
16
16
  }
17
17
  export type LoggingContext = string | Constructor;
18
18
  export type OnMessage = (level: LogLevel, data: object) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/logging",
3
- "version": "4.0.1-next.0",
3
+ "version": "4.0.1-next.2",
4
4
  "description": "Base framework independent logging functionality",
5
5
  "license": "Apache License 2.0",
6
6
  "publishConfig": {
@@ -18,7 +18,7 @@
18
18
  "rxjs": "^7.8.1"
19
19
  },
20
20
  "peerDependencies": {
21
- "@rsdk/common": "^4.0.1-next.0"
21
+ "@rsdk/common": "^4.0.1-next.2"
22
22
  },
23
- "gitHead": "772c1ca796c9a5b279274d6a6fb1a356e64aa71f"
23
+ "gitHead": "f48f893ffc6bccdfd5a0b703cc377a3a770581ff"
24
24
  }
@@ -17,6 +17,21 @@ import type {
17
17
  * Фабрика является статической потому что
18
18
  */
19
19
  export class LoggerFactory {
20
+ /**
21
+ * Переконфигурация pino нужна потому, что изначально логгер инициализируется
22
+ * с дефолтными настройками, т. к. конфигурация ещё не прочитана.
23
+ *
24
+ * FIXME: Это грязно. Надо придумать решение получше.
25
+ * @param opts Опции логгер
26
+ */
27
+ static reconfigure(opts: Partial<LoggerOptions>): void {
28
+ this.applyOptions(opts);
29
+
30
+ const { stream, ...other } = this.opts;
31
+
32
+ this._globalPino = pino(other, stream);
33
+ }
34
+
20
35
  /**
21
36
  * Under the hood every logger instance will use this
22
37
  * static instance. Motivation for this is that it's much
@@ -33,19 +48,31 @@ export class LoggerFactory {
33
48
  // eslint-disable-next-line unicorn/prefer-event-target
34
49
  private static events = new EventEmitter();
35
50
 
36
- static reconfigure(opts: LoggerOptions): void {
37
- const { redact, level, stream = pino.destination() } = opts;
51
+ /**
52
+ * Этот метод должен быть вызван после того, как подключен instrumentation-pino.
53
+ * Пакет instrumentation-pino модифицирует require. Согласно предполагаемому автором
54
+ * библиотеки сценарию использования, нужно сначала выполнять эту модификацию, а
55
+ * уже потом делать require(import) pino.
56
+ *
57
+ * У нас pino импортируется раньше - на этапе сборки NestContainer. Мы не можем
58
+ * воткнуть auto-instrumentation-node вперёд инициализации контейнера потому,
59
+ * что мы хотим, чтобы подключение инструментирование зависело от настройки
60
+ * TRACING_ENABLED. Т. е. нас сначала нужно полностью инициализировать систему
61
+ * конфигурации, а уже потом решать - делать инструментирование или нет.
62
+ */
63
+ static applyInstrumentations(): void {
64
+ const { stream, ...other } = this.opts;
38
65
 
39
- // eslint-disable-next-line @typescript-eslint/no-var-requires,unicorn/prefer-module
40
- this._globalPino = pino(
41
- {
42
- level: level ?? DEFAULT_LEVEL,
43
- ...(redact && { redact }),
44
- },
45
- stream,
46
- );
66
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
67
+ this._globalPino = require('pino')(other, stream);
47
68
  }
48
69
 
70
+ private static opts: LoggerOptions = {
71
+ level: DEFAULT_LEVEL,
72
+ redact: [],
73
+ stream: pino.destination(),
74
+ };
75
+
49
76
  static onMessage(handler: OnMessage): void {
50
77
  this.events.on('msg', handler);
51
78
  }
@@ -57,4 +84,10 @@ export class LoggerFactory {
57
84
  context,
58
85
  );
59
86
  }
87
+
88
+ private static applyOptions(opts: Partial<LoggerOptions>): void {
89
+ const { redact, level, stream = pino.destination() } = opts || {};
90
+
91
+ Object.assign(this.opts, { redact, level: level ?? DEFAULT_LEVEL, stream });
92
+ }
60
93
  }
package/src/types.ts CHANGED
@@ -13,9 +13,9 @@ export enum LogLevel {
13
13
  export type Params = Record<string, unknown>;
14
14
 
15
15
  export interface LoggerOptions {
16
- level?: LogLevel;
17
- redact?: string[];
18
- stream?: pino.DestinationStream;
16
+ level: LogLevel;
17
+ redact: string[];
18
+ stream: pino.DestinationStream;
19
19
  }
20
20
 
21
21
  export type LoggingContext = string | Constructor;