@rsdk/logging 5.12.0-next.3 → 5.12.0-next.5

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/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { DEFAULT_LEVEL } from './defaults';
2
2
  export { PinoLogger } from './implementations/pino-logger.class';
3
- export { LogLevel, Params, LoggerOptions, LoggingContext, OnMessage, LoggerSerealizerMetadata, } from './types';
3
+ export { LogLevel, Params, LoggerOptions, LoggingContext, OnMessage, LoggerSerializerMetadata, LogTimestampFormat, } from './types';
4
4
  export { ILogger, ILogSerializer, LogSerializerBase } from './logger.interface';
5
5
  export { stringifyContext } from './helpers';
6
6
  export { LoggerFactory } from './logger.factory';
package/dist/index.js CHANGED
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LogSerializer = exports.LoggerFactory = exports.stringifyContext = exports.LogLevel = exports.PinoLogger = exports.DEFAULT_LEVEL = void 0;
3
+ exports.LogSerializer = exports.LoggerFactory = exports.stringifyContext = exports.LogTimestampFormat = exports.LogLevel = exports.PinoLogger = exports.DEFAULT_LEVEL = void 0;
4
4
  var defaults_1 = require("./defaults");
5
5
  Object.defineProperty(exports, "DEFAULT_LEVEL", { enumerable: true, get: function () { return defaults_1.DEFAULT_LEVEL; } });
6
6
  var pino_logger_class_1 = require("./implementations/pino-logger.class");
7
7
  Object.defineProperty(exports, "PinoLogger", { enumerable: true, get: function () { return pino_logger_class_1.PinoLogger; } });
8
8
  var types_1 = require("./types");
9
9
  Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return types_1.LogLevel; } });
10
+ Object.defineProperty(exports, "LogTimestampFormat", { enumerable: true, get: function () { return types_1.LogTimestampFormat; } });
10
11
  var helpers_1 = require("./helpers");
11
12
  Object.defineProperty(exports, "stringifyContext", { enumerable: true, get: function () { return helpers_1.stringifyContext; } });
12
13
  var logger_factory_1 = require("./logger.factory");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AAEtB,yEAAiE;AAAxD,+GAAA,UAAU,OAAA;AACnB,iCAOiB;AANf,iGAAA,QAAQ,OAAA;AAQV,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA;AACzB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,kFAAsE;AAA7D,yHAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAA2C;AAAlC,yGAAA,aAAa,OAAA;AAEtB,yEAAiE;AAAxD,+GAAA,UAAU,OAAA;AACnB,iCAQiB;AAPf,iGAAA,QAAQ,OAAA;AAMR,2GAAA,kBAAkB,OAAA;AAGpB,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA;AACzB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,kFAAsE;AAA7D,yHAAA,aAAa,OAAA"}
@@ -6,6 +6,8 @@ import type { LoggerOptions, LoggingContext, OnMessage } from './types';
6
6
  */
7
7
  export declare class LoggerFactory {
8
8
  private static readonly events;
9
+ private static readonly opts;
10
+ private static pinoTimestampFormatMap;
9
11
  /**
10
12
  * Under the hood every logger instance will use this
11
13
  * static instance. Motivation for this is that it's much
@@ -17,7 +19,7 @@ export declare class LoggerFactory {
17
19
  */
18
20
  private static _globalPino;
19
21
  private static _serializers;
20
- private static readonly opts;
22
+ private static get pinoConfig();
21
23
  /**
22
24
  * Переконфигурация pino нужна потому, что изначально логгер инициализируется
23
25
  * с дефолтными настройками, т. к. конфигурация ещё не прочитана.
@@ -5,6 +5,7 @@ const node_events_1 = require("node:events");
5
5
  const logger_metadata_registry_1 = require("./metadata/logger-metadata.registry");
6
6
  const defaults_1 = require("./defaults");
7
7
  const implementations_1 = require("./implementations");
8
+ const types_1 = require("./types");
8
9
  /**
9
10
  * ATTENTION: require('pino') тут не просто так, в общем они нужны для корректной работы хуков из `@opentelemetry/instrumentation-pino`
10
11
  */
@@ -19,6 +20,18 @@ const requirePino = () => {
19
20
  class LoggerFactory {
20
21
  // eslint-disable-next-line unicorn/prefer-event-target
21
22
  static events = new node_events_1.EventEmitter();
23
+ static opts = {
24
+ level: defaults_1.DEFAULT_LEVEL,
25
+ redact: [],
26
+ stream: requirePino().destination(),
27
+ timestampFormat: types_1.LogTimestampFormat.isoTime,
28
+ };
29
+ static pinoTimestampFormatMap = {
30
+ [types_1.LogTimestampFormat.epochTime]: requirePino().stdTimeFunctions.epochTime,
31
+ [types_1.LogTimestampFormat.unixTime]: requirePino().stdTimeFunctions.unixTime,
32
+ [types_1.LogTimestampFormat.nullTime]: requirePino().stdTimeFunctions.nullTime,
33
+ [types_1.LogTimestampFormat.isoTime]: requirePino().stdTimeFunctions.isoTime,
34
+ };
22
35
  /**
23
36
  * Under the hood every logger instance will use this
24
37
  * static instance. Motivation for this is that it's much
@@ -31,13 +44,16 @@ class LoggerFactory {
31
44
  // eslint-disable-next-line @typescript-eslint/no-require-imports
32
45
  static _globalPino = requirePino()({
33
46
  level: defaults_1.DEFAULT_LEVEL,
47
+ timestamp: this.pinoTimestampFormatMap[this.opts.timestampFormat],
34
48
  });
35
49
  static _serializers = null;
36
- static opts = {
37
- level: defaults_1.DEFAULT_LEVEL,
38
- redact: [],
39
- stream: requirePino().destination(),
40
- };
50
+ static get pinoConfig() {
51
+ const { timestampFormat, ...other } = this.opts;
52
+ return {
53
+ ...other,
54
+ timestamp: this.pinoTimestampFormatMap[timestampFormat],
55
+ };
56
+ }
41
57
  /**
42
58
  * Переконфигурация pino нужна потому, что изначально логгер инициализируется
43
59
  * с дефолтными настройками, т. к. конфигурация ещё не прочитана.
@@ -47,7 +63,7 @@ class LoggerFactory {
47
63
  */
48
64
  static reconfigure(opts) {
49
65
  this.applyOptions(opts);
50
- const { stream, ...other } = this.opts;
66
+ const { stream, ...other } = this.pinoConfig;
51
67
  this._globalPino = requirePino()(other, stream);
52
68
  }
53
69
  /**
@@ -70,6 +86,7 @@ class LoggerFactory {
70
86
  // eslint-disable-next-line @typescript-eslint/no-require-imports
71
87
  this._globalPino = requirePino()({
72
88
  ...other,
89
+ timestamp: this.pinoTimestampFormatMap[this.opts.timestampFormat],
73
90
  /**
74
91
  * Функция которая позволяет добавить дополнительные данные в логи Pino
75
92
  */
@@ -144,8 +161,13 @@ class LoggerFactory {
144
161
  return this._serializers.has(name);
145
162
  }
146
163
  static applyOptions(opts) {
147
- const { redact, level, stream = requirePino().destination() } = opts || {};
148
- Object.assign(this.opts, { redact, level: level ?? defaults_1.DEFAULT_LEVEL, stream });
164
+ const { redact, level, stream, timestampFormat } = opts || {};
165
+ Object.assign(this.opts, {
166
+ redact,
167
+ level: level ?? defaults_1.DEFAULT_LEVEL,
168
+ stream: stream ?? requirePino().destination(),
169
+ timestampFormat: timestampFormat ?? requirePino().stdTimeFunctions.isoTime,
170
+ });
149
171
  }
150
172
  }
151
173
  exports.LoggerFactory = LoggerFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.factory.js","sourceRoot":"","sources":["../src/logger.factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.factory.js","sourceRoot":"","sources":["../src/logger.factory.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { Constructor } from '@rsdk/common';
2
- import type { LoggerSerealizerMetadata } from '../types';
2
+ import type { LoggerSerializerMetadata } from '../types';
3
3
  export declare class LoggerMetadataRegistry {
4
4
  private static readonly serializers;
5
- static registerSerializer(target: Constructor, metadata: LoggerSerealizerMetadata): void;
6
- static getSerializers(): LoggerSerealizerMetadata[];
5
+ static registerSerializer(target: Constructor, metadata: LoggerSerializerMetadata): void;
6
+ static getSerializers(): LoggerSerializerMetadata[];
7
7
  }
package/dist/types.d.ts CHANGED
@@ -8,14 +8,22 @@ export declare enum LogLevel {
8
8
  debug = "debug",
9
9
  trace = "trace"
10
10
  }
11
+ export declare enum LogTimestampFormat {
12
+ epochTime = "epochTime",
13
+ unixTime = "unixTime",
14
+ nullTime = "nullTime",
15
+ isoTime = "isoTime"
16
+ }
17
+ export type TimeFn = () => string;
11
18
  export type Params = Record<string, unknown>;
12
19
  export interface LoggerOptions {
13
20
  level: LogLevel;
14
21
  redact: string[];
15
22
  stream: pino.DestinationStream;
23
+ timestampFormat: LogTimestampFormat;
16
24
  }
17
25
  export type LoggingContext = string | Constructor;
18
26
  export type OnMessage = (level: LogLevel, data: Record<string, unknown>) => void;
19
- export interface LoggerSerealizerMetadata {
27
+ export interface LoggerSerializerMetadata {
20
28
  target: Constructor;
21
29
  }
package/dist/types.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LogLevel = void 0;
3
+ exports.LogTimestampFormat = exports.LogLevel = void 0;
4
4
  var LogLevel;
5
5
  (function (LogLevel) {
6
6
  LogLevel["fatal"] = "fatal";
@@ -10,4 +10,11 @@ var LogLevel;
10
10
  LogLevel["debug"] = "debug";
11
11
  LogLevel["trace"] = "trace";
12
12
  })(LogLevel || (exports.LogLevel = LogLevel = {}));
13
+ var LogTimestampFormat;
14
+ (function (LogTimestampFormat) {
15
+ LogTimestampFormat["epochTime"] = "epochTime";
16
+ LogTimestampFormat["unixTime"] = "unixTime";
17
+ LogTimestampFormat["nullTime"] = "nullTime";
18
+ LogTimestampFormat["isoTime"] = "isoTime";
19
+ })(LogTimestampFormat || (exports.LogTimestampFormat = LogTimestampFormat = {}));
13
20
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAGA,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,2BAAe,CAAA;AACjB,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAGA,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,2BAAe,CAAA;AACjB,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB;AAED,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,6CAAuB,CAAA;IACvB,2CAAqB,CAAA;IACrB,2CAAqB,CAAA;IACrB,yCAAmB,CAAA;AACrB,CAAC,EALW,kBAAkB,kCAAlB,kBAAkB,QAK7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/logging",
3
- "version": "5.12.0-next.3",
3
+ "version": "5.12.0-next.5",
4
4
  "description": "Base framework independent logging functionality",
5
5
  "license": "Apache License 2.0",
6
6
  "publishConfig": {
@@ -18,5 +18,5 @@
18
18
  "reflect-metadata": "^0.1.12 || ^0.2.0",
19
19
  "rxjs": "^7.1.0"
20
20
  },
21
- "gitHead": "3e9cc62eeb2e628a6002d2872d05497d882aa536"
21
+ "gitHead": "6a5a92adcb81f72e74db723613b0a930ef52a821"
22
22
  }
@@ -4,12 +4,12 @@ import 'reflect-metadata';
4
4
 
5
5
  import { LOGGER_METADATA_KEY } from '../metadata/constants';
6
6
  import { LoggerMetadataRegistry } from '../metadata/logger-metadata.registry';
7
- import type { LoggerSerealizerMetadata } from '../types';
7
+ import type { LoggerSerializerMetadata } from '../types';
8
8
 
9
9
  const logSerializerDecorator: ClassDecorator = function (
10
10
  target: Function,
11
11
  ): void {
12
- const metadata: LoggerSerealizerMetadata = {
12
+ const metadata: LoggerSerializerMetadata = {
13
13
  target: target as Constructor,
14
14
  };
15
15
 
package/src/index.ts CHANGED
@@ -7,7 +7,8 @@ export {
7
7
  LoggerOptions,
8
8
  LoggingContext,
9
9
  OnMessage,
10
- LoggerSerealizerMetadata,
10
+ LoggerSerializerMetadata,
11
+ LogTimestampFormat,
11
12
  } from './types';
12
13
  export { ILogger, ILogSerializer, LogSerializerBase } from './logger.interface';
13
14
  export { stringifyContext } from './helpers';
@@ -1,6 +1,10 @@
1
1
  import { EventEmitter } from 'node:events';
2
2
  import type _pino from 'pino';
3
- import type { Logger as Pino } from 'pino';
3
+ import type {
4
+ DestinationStream,
5
+ Logger as Pino,
6
+ LoggerOptions as LoggerOptsPino,
7
+ } from 'pino';
4
8
 
5
9
  import { LoggerMetadataRegistry } from './metadata/logger-metadata.registry';
6
10
  import { DEFAULT_LEVEL } from './defaults';
@@ -8,11 +12,13 @@ import { PinoLogger } from './implementations';
8
12
  import type { ILogger, LogSerializerBase } from './logger.interface';
9
13
  import type {
10
14
  LoggerOptions,
11
- LoggerSerealizerMetadata,
15
+ LoggerSerializerMetadata,
12
16
  LoggingContext,
13
17
  LogLevel,
14
18
  OnMessage,
19
+ TimeFn,
15
20
  } from './types';
21
+ import { LogTimestampFormat } from './types';
16
22
 
17
23
  /**
18
24
  * ATTENTION: require('pino') тут не просто так, в общем они нужны для корректной работы хуков из `@opentelemetry/instrumentation-pino`
@@ -30,6 +36,20 @@ export class LoggerFactory {
30
36
  // eslint-disable-next-line unicorn/prefer-event-target
31
37
  private static readonly events = new EventEmitter();
32
38
 
39
+ private static readonly opts: LoggerOptions = {
40
+ level: DEFAULT_LEVEL,
41
+ redact: [],
42
+ stream: requirePino().destination(),
43
+ timestampFormat: LogTimestampFormat.isoTime,
44
+ };
45
+
46
+ private static pinoTimestampFormatMap: Record<LogTimestampFormat, TimeFn> = {
47
+ [LogTimestampFormat.epochTime]: requirePino().stdTimeFunctions.epochTime,
48
+ [LogTimestampFormat.unixTime]: requirePino().stdTimeFunctions.unixTime,
49
+ [LogTimestampFormat.nullTime]: requirePino().stdTimeFunctions.nullTime,
50
+ [LogTimestampFormat.isoTime]: requirePino().stdTimeFunctions.isoTime,
51
+ };
52
+
33
53
  /**
34
54
  * Under the hood every logger instance will use this
35
55
  * static instance. Motivation for this is that it's much
@@ -42,15 +62,21 @@ export class LoggerFactory {
42
62
  // eslint-disable-next-line @typescript-eslint/no-require-imports
43
63
  private static _globalPino: Pino = requirePino()({
44
64
  level: DEFAULT_LEVEL,
65
+ timestamp: this.pinoTimestampFormatMap[this.opts.timestampFormat],
45
66
  });
46
67
 
47
68
  private static _serializers: Map<string, LogSerializerBase> | null = null;
48
69
 
49
- private static readonly opts: LoggerOptions = {
50
- level: DEFAULT_LEVEL,
51
- redact: [],
52
- stream: requirePino().destination(),
53
- };
70
+ private static get pinoConfig(): LoggerOptsPino & {
71
+ stream: DestinationStream;
72
+ } {
73
+ const { timestampFormat, ...other } = this.opts;
74
+
75
+ return {
76
+ ...other,
77
+ timestamp: this.pinoTimestampFormatMap[timestampFormat],
78
+ };
79
+ }
54
80
 
55
81
  /**
56
82
  * Переконфигурация pino нужна потому, что изначально логгер инициализируется
@@ -62,7 +88,7 @@ export class LoggerFactory {
62
88
  static reconfigure(opts: Partial<LoggerOptions>): void {
63
89
  this.applyOptions(opts);
64
90
 
65
- const { stream, ...other } = this.opts;
91
+ const { stream, ...other } = this.pinoConfig;
66
92
 
67
93
  this._globalPino = requirePino()(other, stream);
68
94
  }
@@ -91,6 +117,7 @@ export class LoggerFactory {
91
117
  this._globalPino = requirePino()(
92
118
  {
93
119
  ...other,
120
+ timestamp: this.pinoTimestampFormatMap[this.opts.timestampFormat],
94
121
 
95
122
  /**
96
123
  * Функция которая позволяет добавить дополнительные данные в логи Pino
@@ -139,7 +166,7 @@ export class LoggerFactory {
139
166
  static getSerializers(): LogSerializerBase[] {
140
167
  if (this._serializers) return Array.from(this._serializers.values());
141
168
 
142
- const metas: LoggerSerealizerMetadata[] =
169
+ const metas: LoggerSerializerMetadata[] =
143
170
  LoggerMetadataRegistry.getSerializers();
144
171
 
145
172
  this._serializers = new Map<string, LogSerializerBase>();
@@ -189,8 +216,14 @@ export class LoggerFactory {
189
216
  }
190
217
 
191
218
  private static applyOptions(opts: Partial<LoggerOptions>): void {
192
- const { redact, level, stream = requirePino().destination() } = opts || {};
193
-
194
- Object.assign(this.opts, { redact, level: level ?? DEFAULT_LEVEL, stream });
219
+ const { redact, level, stream, timestampFormat } = opts || {};
220
+
221
+ Object.assign(this.opts, {
222
+ redact,
223
+ level: level ?? DEFAULT_LEVEL,
224
+ stream: stream ?? requirePino().destination(),
225
+ timestampFormat:
226
+ timestampFormat ?? requirePino().stdTimeFunctions.isoTime,
227
+ });
195
228
  }
196
229
  }
@@ -1,21 +1,21 @@
1
1
  import type { Constructor } from '@rsdk/common';
2
2
 
3
- import type { LoggerSerealizerMetadata } from '../types';
3
+ import type { LoggerSerializerMetadata } from '../types';
4
4
 
5
5
  export class LoggerMetadataRegistry {
6
6
  private static readonly serializers = new Map<
7
7
  Constructor,
8
- LoggerSerealizerMetadata
8
+ LoggerSerializerMetadata
9
9
  >();
10
10
 
11
11
  static registerSerializer(
12
12
  target: Constructor,
13
- metadata: LoggerSerealizerMetadata,
13
+ metadata: LoggerSerializerMetadata,
14
14
  ): void {
15
15
  this.serializers.set(target, metadata);
16
16
  }
17
17
 
18
- static getSerializers(): LoggerSerealizerMetadata[] {
18
+ static getSerializers(): LoggerSerializerMetadata[] {
19
19
  return Array.from(this.serializers.values());
20
20
  }
21
21
  }
package/src/types.ts CHANGED
@@ -10,12 +10,21 @@ export enum LogLevel {
10
10
  trace = 'trace',
11
11
  }
12
12
 
13
+ export enum LogTimestampFormat {
14
+ epochTime = 'epochTime',
15
+ unixTime = 'unixTime',
16
+ nullTime = 'nullTime',
17
+ isoTime = 'isoTime',
18
+ }
19
+ export type TimeFn = () => string;
20
+
13
21
  export type Params = Record<string, unknown>;
14
22
 
15
23
  export interface LoggerOptions {
16
24
  level: LogLevel;
17
25
  redact: string[];
18
26
  stream: pino.DestinationStream;
27
+ timestampFormat: LogTimestampFormat;
19
28
  }
20
29
 
21
30
  export type LoggingContext = string | Constructor;
@@ -25,6 +34,6 @@ export type OnMessage = (
25
34
  data: Record<string, unknown>,
26
35
  ) => void;
27
36
 
28
- export interface LoggerSerealizerMetadata {
37
+ export interface LoggerSerializerMetadata {
29
38
  target: Constructor;
30
39
  }