@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 +4 -0
- package/dist/logger.factory.d.ts +23 -1
- package/dist/logger.factory.js +36 -6
- package/dist/logger.factory.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/package.json +3 -3
- package/src/logger.factory.ts +43 -10
- package/src/types.ts +3 -3
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
|
package/dist/logger.factory.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
}
|
package/dist/logger.factory.js
CHANGED
|
@@ -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
|
-
|
|
32
|
-
|
|
33
|
-
this._globalPino = (0, pino_1.default)(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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;
|
|
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
|
|
14
|
-
redact
|
|
15
|
-
stream
|
|
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.
|
|
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.
|
|
21
|
+
"@rsdk/common": "^4.0.1-next.1"
|
|
22
22
|
},
|
|
23
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "9dcbaf369400a27c0b29fce9c7f319c5b81c9594"
|
|
24
24
|
}
|
package/src/logger.factory.ts
CHANGED
|
@@ -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
|
-
|
|
37
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
17
|
-
redact
|
|
18
|
-
stream
|
|
16
|
+
level: LogLevel;
|
|
17
|
+
redact: string[];
|
|
18
|
+
stream: pino.DestinationStream;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export type LoggingContext = string | Constructor;
|