@rsdk/logging 4.0.1-next.0 → 4.0.1-next.1

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,10 @@
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.1](https://github.com/R-Vision/rsdk/compare/v4.0.0...v4.0.1-next.1) (2023-12-06)
7
+
8
+ **Note:** Version bump only for package @rsdk/logging
9
+
6
10
  ## [4.0.1-next.0](https://github.com/R-Vision/rsdk/compare/v4.0.0...v4.0.1-next.0) (2023-12-06)
7
11
 
8
12
  **Note:** Version bump only for package @rsdk/logging
@@ -5,6 +5,7 @@ import type { LoggerOptions, LoggingContext, OnMessage } from './types';
5
5
  * Фабрика является статической потому что
6
6
  */
7
7
  export declare class LoggerFactory {
8
+ private static opts;
8
9
  /**
9
10
  * Under the hood every logger instance will use this
10
11
  * static instance. Motivation for this is that it's much
@@ -16,7 +17,28 @@ export declare class LoggerFactory {
16
17
  */
17
18
  private static _globalPino;
18
19
  private static events;
19
- static reconfigure(opts: LoggerOptions): void;
20
+ /**
21
+ * Переконфигурация pino нужна потому, что изначально логгер инициализируется
22
+ * с дефолтными настройками, т. к. конфигурация ещё не прочитана.
23
+ *
24
+ * FIXME: Это грязно. Надо придумать решение получше.
25
+ * @param opts Опции логгер
26
+ */
27
+ static reconfigure(opts: Partial<LoggerOptions>): void;
28
+ /**
29
+ * Этот метод должен быть вызван после того, как подключен instrumentation-pino.
30
+ * Пакет instrumentation-pino модифицирует require. Согласно предполагаемому автором
31
+ * библиотеки сценарию использования, нужно сначала выполнять эту модификацию, а
32
+ * уже потом делать require(import) pino.
33
+ *
34
+ * У нас pino импортируется раньше - на этапе сборки NestContainer. Мы не можем
35
+ * воткнуть auto-instrumentation-node вперёд инициализации контейнера потому,
36
+ * что мы хотим, чтобы подключение инструментирование зависело от настройки
37
+ * TRACING_ENABLED. Т. е. нас сначала нужно полностью инициализировать систему
38
+ * конфигурации, а уже потом решать - делать инструментирование или нет.
39
+ */
40
+ static applyInstrumentations(): void;
20
41
  static onMessage(handler: OnMessage): void;
21
42
  static create(context: LoggingContext): ILogger;
43
+ private static applyOptions;
22
44
  }
@@ -13,6 +13,11 @@ const implementations_1 = require("./implementations");
13
13
  * Фабрика является статической потому что
14
14
  */
15
15
  class LoggerFactory {
16
+ static opts = {
17
+ level: defaults_1.DEFAULT_LEVEL,
18
+ redact: [],
19
+ stream: pino_1.default.destination(),
20
+ };
16
21
  /**
17
22
  * Under the hood every logger instance will use this
18
23
  * static instance. Motivation for this is that it's much
@@ -27,13 +32,34 @@ class LoggerFactory {
27
32
  });
28
33
  // eslint-disable-next-line unicorn/prefer-event-target
29
34
  static events = new node_events_1.default();
35
+ /**
36
+ * Переконфигурация pino нужна потому, что изначально логгер инициализируется
37
+ * с дефолтными настройками, т. к. конфигурация ещё не прочитана.
38
+ *
39
+ * FIXME: Это грязно. Надо придумать решение получше.
40
+ * @param opts Опции логгер
41
+ */
30
42
  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);
43
+ this.applyOptions(opts);
44
+ const { stream, ...other } = this.opts;
45
+ this._globalPino = (0, pino_1.default)(other, stream);
46
+ }
47
+ /**
48
+ * Этот метод должен быть вызван после того, как подключен instrumentation-pino.
49
+ * Пакет instrumentation-pino модифицирует require. Согласно предполагаемому автором
50
+ * библиотеки сценарию использования, нужно сначала выполнять эту модификацию, а
51
+ * уже потом делать require(import) pino.
52
+ *
53
+ * У нас pino импортируется раньше - на этапе сборки NestContainer. Мы не можем
54
+ * воткнуть auto-instrumentation-node вперёд инициализации контейнера потому,
55
+ * что мы хотим, чтобы подключение инструментирование зависело от настройки
56
+ * TRACING_ENABLED. Т. е. нас сначала нужно полностью инициализировать систему
57
+ * конфигурации, а уже потом решать - делать инструментирование или нет.
58
+ */
59
+ static applyInstrumentations() {
60
+ const { stream, ...other } = this.opts;
61
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
62
+ this._globalPino = require('pino')(other, stream);
37
63
  }
38
64
  static onMessage(handler) {
39
65
  this.events.on('msg', handler);
@@ -41,6 +67,10 @@ class LoggerFactory {
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;IAChB,MAAM,CAAC,IAAI,GAAkB;QACnC,KAAK,EAAE,wBAAa;QACpB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,cAAI,CAAC,WAAW,EAAE;KAC3B,CAAC;IAEF;;;;;;;;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;;;;;;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;;;;;;;;;;;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;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;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.1",
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.1"
22
22
  },
23
- "gitHead": "772c1ca796c9a5b279274d6a6fb1a356e64aa71f"
23
+ "gitHead": "9dcbaf369400a27c0b29fce9c7f319c5b81c9594"
24
24
  }
@@ -17,6 +17,12 @@ import type {
17
17
  * Фабрика является статической потому что
18
18
  */
19
19
  export class LoggerFactory {
20
+ private static opts: LoggerOptions = {
21
+ level: DEFAULT_LEVEL,
22
+ redact: [],
23
+ stream: pino.destination(),
24
+ };
25
+
20
26
  /**
21
27
  * Under the hood every logger instance will use this
22
28
  * static instance. Motivation for this is that it's much
@@ -33,17 +39,38 @@ export class LoggerFactory {
33
39
  // eslint-disable-next-line unicorn/prefer-event-target
34
40
  private static events = new EventEmitter();
35
41
 
36
- static reconfigure(opts: LoggerOptions): void {
37
- const { redact, level, stream = pino.destination() } = opts;
42
+ /**
43
+ * Переконфигурация pino нужна потому, что изначально логгер инициализируется
44
+ * с дефолтными настройками, т. к. конфигурация ещё не прочитана.
45
+ *
46
+ * FIXME: Это грязно. Надо придумать решение получше.
47
+ * @param opts Опции логгер
48
+ */
49
+ static reconfigure(opts: Partial<LoggerOptions>): void {
50
+ this.applyOptions(opts);
51
+
52
+ const { stream, ...other } = this.opts;
38
53
 
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
- );
54
+ this._globalPino = pino(other, stream);
55
+ }
56
+
57
+ /**
58
+ * Этот метод должен быть вызван после того, как подключен instrumentation-pino.
59
+ * Пакет instrumentation-pino модифицирует require. Согласно предполагаемому автором
60
+ * библиотеки сценарию использования, нужно сначала выполнять эту модификацию, а
61
+ * уже потом делать require(import) pino.
62
+ *
63
+ * У нас pino импортируется раньше - на этапе сборки NestContainer. Мы не можем
64
+ * воткнуть auto-instrumentation-node вперёд инициализации контейнера потому,
65
+ * что мы хотим, чтобы подключение инструментирование зависело от настройки
66
+ * TRACING_ENABLED. Т. е. нас сначала нужно полностью инициализировать систему
67
+ * конфигурации, а уже потом решать - делать инструментирование или нет.
68
+ */
69
+ static applyInstrumentations(): void {
70
+ const { stream, ...other } = this.opts;
71
+
72
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
73
+ this._globalPino = require('pino')(other, stream);
47
74
  }
48
75
 
49
76
  static onMessage(handler: OnMessage): void {
@@ -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;