@nest-yalc-2/logger 1.0.0

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.
Files changed (55) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +9 -0
  3. package/package.json +29 -0
  4. package/src/__tests__/logger-console.service.spec.ts +136 -0
  5. package/src/__tests__/logger-nest.service.spec.ts +39 -0
  6. package/src/__tests__/logger-pino.service.spec.ts +149 -0
  7. package/src/__tests__/logger.factory.spec.ts +69 -0
  8. package/src/__tests__/logger.helper.spec.ts +54 -0
  9. package/src/__tests__/logger.service.spec.ts +78 -0
  10. package/src/__tests__/tsconfig.json +3 -0
  11. package/src/__tests__/typeorm-logger.spec.ts +111 -0
  12. package/src/index.d.ts +10 -0
  13. package/src/index.js +27 -0
  14. package/src/index.js.map +1 -0
  15. package/src/index.ts +10 -0
  16. package/src/logger-abstract.service.d.ts +65 -0
  17. package/src/logger-abstract.service.js +91 -0
  18. package/src/logger-abstract.service.js.map +1 -0
  19. package/src/logger-abstract.service.ts +210 -0
  20. package/src/logger-console.service.d.ts +5 -0
  21. package/src/logger-console.service.js +23 -0
  22. package/src/logger-console.service.js.map +1 -0
  23. package/src/logger-console.service.ts +80 -0
  24. package/src/logger-nest.service.d.ts +35 -0
  25. package/src/logger-nest.service.js +59 -0
  26. package/src/logger-nest.service.js.map +1 -0
  27. package/src/logger-nest.service.ts +151 -0
  28. package/src/logger-pino.service.d.ts +10 -0
  29. package/src/logger-pino.service.js +89 -0
  30. package/src/logger-pino.service.js.map +1 -0
  31. package/src/logger-pino.service.ts +161 -0
  32. package/src/logger.enum.d.ts +17 -0
  33. package/src/logger.enum.js +35 -0
  34. package/src/logger.enum.js.map +1 -0
  35. package/src/logger.enum.ts +32 -0
  36. package/src/logger.event.d.ts +11 -0
  37. package/src/logger.event.js +16 -0
  38. package/src/logger.event.js.map +1 -0
  39. package/src/logger.event.ts +11 -0
  40. package/src/logger.factory.d.ts +3 -0
  41. package/src/logger.factory.js +66 -0
  42. package/src/logger.factory.js.map +1 -0
  43. package/src/logger.factory.ts +70 -0
  44. package/src/logger.helper.d.ts +4 -0
  45. package/src/logger.helper.js +36 -0
  46. package/src/logger.helper.js.map +1 -0
  47. package/src/logger.helper.ts +40 -0
  48. package/src/logger.service.d.ts +3 -0
  49. package/src/logger.service.js +25 -0
  50. package/src/logger.service.js.map +1 -0
  51. package/src/logger.service.ts +41 -0
  52. package/src/typeorm-logger.d.ts +13 -0
  53. package/src/typeorm-logger.js +82 -0
  54. package/src/typeorm-logger.js.map +1 -0
  55. package/src/typeorm-logger.ts +125 -0
@@ -0,0 +1,151 @@
1
+ import { ConsoleLogger, ConsoleLoggerOptions } from '@nestjs/common';
2
+ import {
3
+ IImprovedLoggerOptions,
4
+ ILoggerPluginMethods,
5
+ ImprovedLoggerService,
6
+ LogMethodOptions,
7
+ beforeLogging,
8
+ } from './logger-abstract.service.js';
9
+ import { maskDataInObject } from './logger.helper.js';
10
+ import { WithPluginSystem } from '@nest-yalc-2/utils/plugin.helper.js';
11
+
12
+ export class ImprovedNestLogger
13
+ extends WithPluginSystem<ILoggerPluginMethods>(ConsoleLogger)
14
+ implements ImprovedLoggerService
15
+ {
16
+ public readonly isImprovedLoggerService = true;
17
+
18
+ constructor(
19
+ context: string,
20
+ options: ConsoleLoggerOptions,
21
+ protected _options: IImprovedLoggerOptions = {},
22
+ ) {
23
+ super(context, options);
24
+ }
25
+
26
+ private getOptions(options: LogMethodOptions | any): LogMethodOptions {
27
+ return typeof options === 'string' ? { message: options } : options;
28
+ }
29
+
30
+ private composeMessage(message: any, options: LogMethodOptions) {
31
+ const data = {
32
+ ...maskDataInObject(options.data, options.masks, options.stack),
33
+ config: options.config,
34
+ };
35
+
36
+ return (
37
+ (typeof message === 'string'
38
+ ? message
39
+ : JSON.stringify(message, null, 2)) +
40
+ (data ? `\n${JSON.stringify(data, null, 2)}` : '')
41
+ );
42
+ }
43
+
44
+ log(message: any): void;
45
+ log(message: any, options: LogMethodOptions): void;
46
+ log(message: any, ...optionalParams: any[]): void;
47
+ log(
48
+ message: unknown,
49
+ options: LogMethodOptions = {},
50
+ ...rest: unknown[]
51
+ ): void {
52
+ const _options = this.getOptions(options);
53
+
54
+ this.beforeLogging(message, _options);
55
+
56
+ super.log(
57
+ this.composeMessage(message, _options),
58
+ _options.context ?? this.context,
59
+ ...rest,
60
+ );
61
+ }
62
+
63
+ error(message: any, stack?: string | undefined): void;
64
+ error(
65
+ message: any,
66
+ stack: string | undefined,
67
+ options: LogMethodOptions,
68
+ ): void;
69
+ error(message: any, ...optionalParams: any[]): void;
70
+ error(
71
+ message: unknown,
72
+ stack?: unknown,
73
+ options: LogMethodOptions = {},
74
+ ...rest: unknown[]
75
+ ): void {
76
+ const _options = this.getOptions(options);
77
+ this.beforeLogging(message, _options);
78
+
79
+ super.error(
80
+ this.composeMessage(message, _options),
81
+ stack,
82
+ _options.context ?? this.context,
83
+ ...rest,
84
+ );
85
+ }
86
+
87
+ debug(message: any): void;
88
+ debug(message: any, options: LogMethodOptions): void;
89
+ debug(message: any, ...optionalParams: any[]): void;
90
+ debug(
91
+ message: unknown,
92
+ options: LogMethodOptions = {},
93
+ ...rest: unknown[]
94
+ ): void {
95
+ const _options = this.getOptions(options);
96
+ this.beforeLogging(message, _options);
97
+
98
+ super.debug(
99
+ this.composeMessage(message, _options),
100
+ _options.context ?? this.context,
101
+ ...rest,
102
+ );
103
+ }
104
+
105
+ verbose(message: any): void;
106
+ verbose(message: any, options: LogMethodOptions): void;
107
+ verbose(message: any, ...optionalParams: any[]): void;
108
+ verbose(
109
+ message: unknown,
110
+ options: LogMethodOptions = {},
111
+ ...rest: unknown[]
112
+ ): void {
113
+ const _options = this.getOptions(options);
114
+ this.beforeLogging(message, _options);
115
+
116
+ super.verbose(
117
+ this.composeMessage(message, _options),
118
+ _options.context ?? this.context,
119
+ ...rest,
120
+ );
121
+ }
122
+
123
+ warn(message: any): void;
124
+ warn(message: any, options: LogMethodOptions): void;
125
+ warn(message: any, ...optionalParams: any[]): void;
126
+ warn(
127
+ message: unknown,
128
+ options: LogMethodOptions = {},
129
+ ...rest: unknown[]
130
+ ): void {
131
+ const _options = this.getOptions(options);
132
+ this.beforeLogging(message, _options);
133
+
134
+ super.warn(
135
+ this.composeMessage(message, _options),
136
+ _options.context ?? this.context,
137
+ ...rest,
138
+ );
139
+ }
140
+
141
+ beforeLogging(message: any, options: LogMethodOptions) {
142
+ this.options.event = this.options.event ?? {};
143
+ this.invokePlugins(
144
+ 'onBeforeLogging',
145
+ message,
146
+ options,
147
+ this._options.clsService,
148
+ );
149
+ void beforeLogging(message, options);
150
+ }
151
+ }
@@ -0,0 +1,10 @@
1
+ import { LogLevel, OnApplicationShutdown } from '@nestjs/common';
2
+ import { type Logger } from 'pino';
3
+ import { type IImprovedLoggerOptions, LoggerAbstractService } from './logger-abstract.service.js';
4
+ export declare const FLUSH_INTERVAL = 10000;
5
+ export declare class PinoLogger extends LoggerAbstractService implements OnApplicationShutdown {
6
+ getLogger(): Logger;
7
+ constructor(context: string, logLevels: LogLevel[], options?: IImprovedLoggerOptions);
8
+ onApplicationShutdown(): Promise<void>;
9
+ }
10
+ export declare function flush(): Promise<unknown>;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PinoLogger = exports.FLUSH_INTERVAL = void 0;
7
+ exports.flush = flush;
8
+ const pino_1 = __importDefault(require("pino"));
9
+ const logger_abstract_service_js_1 = require("./logger-abstract.service.js");
10
+ const logger_helper_js_1 = require("./logger.helper.js");
11
+ const promise_helper_js_1 = require("@nest-yalc-2/utils/promise.helper.js");
12
+ let logger;
13
+ let destination;
14
+ exports.FLUSH_INTERVAL = 10000;
15
+ class PinoLogger extends logger_abstract_service_js_1.LoggerAbstractService {
16
+ getLogger() {
17
+ return logger;
18
+ }
19
+ constructor(context, logLevels, options = {}) {
20
+ super(context, logLevels, {
21
+ log: (message, options) => logger.info({
22
+ context: options?.context ?? context,
23
+ ...(0, logger_helper_js_1.maskDataInObject)(options?.data, options?.masks),
24
+ config: options?.config,
25
+ trace: options?.stack,
26
+ }, message),
27
+ error: (message, trace, options) => {
28
+ logger.error({
29
+ context: options?.context ?? context,
30
+ ...(0, logger_helper_js_1.maskDataInObject)(options?.data, options?.masks),
31
+ config: options?.config,
32
+ trace,
33
+ }, message);
34
+ },
35
+ debug: (message, options) => logger.debug({
36
+ context: options?.context ?? context,
37
+ ...(0, logger_helper_js_1.maskDataInObject)(options?.data, options?.masks),
38
+ config: options?.config,
39
+ trace: options?.stack,
40
+ }, message),
41
+ warn: (message, options) => logger.warn({
42
+ context: options?.context ?? context,
43
+ ...(0, logger_helper_js_1.maskDataInObject)(options?.data, options?.masks),
44
+ config: options?.config,
45
+ trace: options?.stack,
46
+ }, message),
47
+ verbose: (message, options) => logger.trace({
48
+ context: options?.context ?? context,
49
+ ...(0, logger_helper_js_1.maskDataInObject)(options?.data, options?.masks),
50
+ config: options?.config,
51
+ trace: options?.stack,
52
+ }, message),
53
+ }, options);
54
+ if (!logger) {
55
+ destination = pino_1.default.destination({ sync: false });
56
+ logger = (0, pino_1.default)({
57
+ formatters: {
58
+ level: (label) => {
59
+ return { level: label };
60
+ },
61
+ },
62
+ timestamp: () => `,"timestamp":"${new Date().toISOString()}"`,
63
+ }, destination);
64
+ }
65
+ logger.level = 'trace';
66
+ setInterval(function () {
67
+ logger.flush();
68
+ }, exports.FLUSH_INTERVAL).unref();
69
+ promise_helper_js_1.globalPromiseTracker.addDeferred(flush);
70
+ }
71
+ async onApplicationShutdown() {
72
+ await flush();
73
+ }
74
+ }
75
+ exports.PinoLogger = PinoLogger;
76
+ function flush() {
77
+ destination?.flushSync();
78
+ return new Promise((resolve, reject) => {
79
+ logger.flush((err) => {
80
+ if (err) {
81
+ reject(err);
82
+ }
83
+ else {
84
+ resolve('Logger flushed successfully');
85
+ }
86
+ });
87
+ });
88
+ }
89
+ //# sourceMappingURL=logger-pino.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-pino.service.js","sourceRoot":"","sources":["logger-pino.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import { LogLevel, OnApplicationShutdown } from '@nestjs/common';
2
+ import pino, { type Logger } from 'pino';
3
+ import {
4
+ type IImprovedLoggerOptions,
5
+ LoggerAbstractService,
6
+ } from './logger-abstract.service.js';
7
+ import { maskDataInObject } from './logger.helper.js';
8
+ import { globalPromiseTracker } from '@nest-yalc-2/utils/promise.helper.js';
9
+ import { SonicBoom } from 'sonic-boom';
10
+
11
+ let logger: Logger;
12
+ let destination: SonicBoom;
13
+
14
+ export const FLUSH_INTERVAL = 10000;
15
+
16
+ export class PinoLogger
17
+ extends LoggerAbstractService
18
+ implements OnApplicationShutdown
19
+ {
20
+ getLogger(): Logger {
21
+ return logger;
22
+ }
23
+
24
+ constructor(
25
+ context: string,
26
+ logLevels: LogLevel[],
27
+ options: IImprovedLoggerOptions = {},
28
+ ) {
29
+ super(
30
+ context,
31
+ logLevels,
32
+ {
33
+ log: (message, options) =>
34
+ logger.info(
35
+ {
36
+ context: options?.context ?? context,
37
+ ...maskDataInObject(options?.data, options?.masks),
38
+ config: options?.config,
39
+ trace: options?.stack,
40
+ },
41
+ message,
42
+ ),
43
+ error: (message, trace, options) => {
44
+ logger.error(
45
+ {
46
+ context: options?.context ?? context,
47
+ ...maskDataInObject(options?.data, options?.masks),
48
+ config: options?.config,
49
+ trace,
50
+ },
51
+ message,
52
+ );
53
+ },
54
+ debug: (message, options) =>
55
+ logger.debug(
56
+ {
57
+ context: options?.context ?? context,
58
+ ...maskDataInObject(options?.data, options?.masks),
59
+ config: options?.config,
60
+ trace: options?.stack,
61
+ },
62
+ message,
63
+ ),
64
+ warn: (message, options) =>
65
+ logger.warn(
66
+ {
67
+ context: options?.context ?? context,
68
+ ...maskDataInObject(options?.data, options?.masks),
69
+ config: options?.config,
70
+ trace: options?.stack,
71
+ },
72
+ message,
73
+ ),
74
+ verbose: (message, options) =>
75
+ logger.trace(
76
+ {
77
+ context: options?.context ?? context,
78
+ ...maskDataInObject(options?.data, options?.masks),
79
+ config: options?.config,
80
+ trace: options?.stack,
81
+ },
82
+ message,
83
+ ),
84
+ },
85
+ options,
86
+ );
87
+
88
+ if (!logger) {
89
+ destination = pino.destination({ sync: false });
90
+ logger = pino(
91
+ {
92
+ // base: {
93
+ // memorySize: process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE,
94
+ // region: process.env.AWS_REGION,
95
+ // runtime: process.env.AWS_EXECUTION_ENV,
96
+ // version: process.env.AWS_LAMBDA_FUNCTION_VERSION,
97
+ // },
98
+ // name: process.env.AWS_LAMBDA_FUNCTION_NAME,
99
+ // level: process.env.LOG_LEVEL || 'info',
100
+ formatters: {
101
+ level: (label: string) => {
102
+ return { level: label };
103
+ },
104
+ },
105
+ timestamp: () => `,"timestamp":"${new Date().toISOString()}"`,
106
+ },
107
+ destination,
108
+ );
109
+ }
110
+
111
+ logger.level = 'trace'; // enable all. Levels are handled by the Service.
112
+
113
+ // asynchronously flush every 10 seconds to keep the buffer empty
114
+ // in periods of low activity
115
+ setInterval(function () {
116
+ logger.flush();
117
+ }, FLUSH_INTERVAL).unref();
118
+
119
+ // TODO: remove it if it's not needed anymore (https://github.com/pinojs/pino/pull/1240/files)
120
+ // use pino.final to create a special logger that
121
+ // guarantees final tick writes
122
+ // const handler = pino.destination(
123
+ // logger,
124
+ // (err: String, finalLogger: Logger, evt: String) => {
125
+ // finalLogger.info(`${evt} caught`);
126
+ // if (err) finalLogger.error(err, 'error caused exit');
127
+ // process.exit(err ? 1 : 0);
128
+ // },
129
+ // );
130
+ // // catch all the ways node might exit
131
+ // process.on('beforeExit', () => handler(null, 'beforeExit'));
132
+ // process.on('exit', () => handler(null, 'exit'));
133
+ // process.on('uncaughtException', (err) => handler(err, 'uncaughtException'));
134
+ // process.on('SIGINT', () => handler(null, 'SIGINT'));
135
+ // process.on('SIGQUIT', () => handler(null, 'SIGQUIT'));
136
+ // process.on('SIGTERM', () => handler(null, 'SIGTERM'));
137
+
138
+ globalPromiseTracker.addDeferred(flush);
139
+ }
140
+
141
+ async onApplicationShutdown() {
142
+ await flush();
143
+ }
144
+ }
145
+
146
+ /**
147
+ * We keep this function outside of the class such that we do not rely
148
+ * on the class instance that might be destroyed before the flush is called.
149
+ */
150
+ export function flush() {
151
+ destination?.flushSync();
152
+ return new Promise((resolve, reject) => {
153
+ logger.flush((err) => {
154
+ if (err) {
155
+ reject(err);
156
+ } else {
157
+ resolve('Logger flushed successfully');
158
+ }
159
+ });
160
+ });
161
+ }
@@ -0,0 +1,17 @@
1
+ export declare enum LogLevelEnum {
2
+ LOG = "log",
3
+ ERROR = "error",
4
+ WARN = "warn",
5
+ DEBUG = "debug",
6
+ VERBOSE = "verbose"
7
+ }
8
+ export declare const LOG_LEVEL_DEFAULT: LogLevelEnum[];
9
+ export declare const LOG_LEVEL_ALL: LogLevelEnum[];
10
+ export declare enum LoggerTypeEnum {
11
+ CONSOLE = "console",
12
+ PINO = "pino",
13
+ NEST = "nest-logger"
14
+ }
15
+ export declare enum LoggerDefContext {
16
+ NEST_SYSTEM = "system"
17
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoggerDefContext = exports.LoggerTypeEnum = exports.LOG_LEVEL_ALL = exports.LOG_LEVEL_DEFAULT = exports.LogLevelEnum = void 0;
4
+ var LogLevelEnum;
5
+ (function (LogLevelEnum) {
6
+ LogLevelEnum["LOG"] = "log";
7
+ LogLevelEnum["ERROR"] = "error";
8
+ LogLevelEnum["WARN"] = "warn";
9
+ LogLevelEnum["DEBUG"] = "debug";
10
+ LogLevelEnum["VERBOSE"] = "verbose";
11
+ })(LogLevelEnum || (exports.LogLevelEnum = LogLevelEnum = {}));
12
+ exports.LOG_LEVEL_DEFAULT = [
13
+ LogLevelEnum.DEBUG,
14
+ LogLevelEnum.ERROR,
15
+ LogLevelEnum.LOG,
16
+ LogLevelEnum.WARN,
17
+ ];
18
+ exports.LOG_LEVEL_ALL = [
19
+ LogLevelEnum.DEBUG,
20
+ LogLevelEnum.ERROR,
21
+ LogLevelEnum.LOG,
22
+ LogLevelEnum.VERBOSE,
23
+ LogLevelEnum.WARN,
24
+ ];
25
+ var LoggerTypeEnum;
26
+ (function (LoggerTypeEnum) {
27
+ LoggerTypeEnum["CONSOLE"] = "console";
28
+ LoggerTypeEnum["PINO"] = "pino";
29
+ LoggerTypeEnum["NEST"] = "nest-logger";
30
+ })(LoggerTypeEnum || (exports.LoggerTypeEnum = LoggerTypeEnum = {}));
31
+ var LoggerDefContext;
32
+ (function (LoggerDefContext) {
33
+ LoggerDefContext["NEST_SYSTEM"] = "system";
34
+ })(LoggerDefContext || (exports.LoggerDefContext = LoggerDefContext = {}));
35
+ //# sourceMappingURL=logger.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.enum.js","sourceRoot":"","sources":["logger.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,2BAAW,CAAA;IACX,+BAAe,CAAA;IACf,6BAAa,CAAA;IACb,+BAAe,CAAA;IACf,mCAAmB,CAAA;AACrB,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB;AAEY,QAAA,iBAAiB,GAAG;IAC/B,YAAY,CAAC,KAAK;IAClB,YAAY,CAAC,KAAK;IAClB,YAAY,CAAC,GAAG;IAChB,YAAY,CAAC,IAAI;CAClB,CAAC;AAEW,QAAA,aAAa,GAAG;IAC3B,YAAY,CAAC,KAAK;IAClB,YAAY,CAAC,KAAK;IAClB,YAAY,CAAC,GAAG;IAChB,YAAY,CAAC,OAAO;IACpB,YAAY,CAAC,IAAI;CAClB,CAAC;AAEF,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,+BAAa,CAAA;IACb,sCAAoB,CAAA;AACtB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB;AAED,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,0CAAsB,CAAA;AACxB,CAAC,EAFW,gBAAgB,gCAAhB,gBAAgB,QAE3B"}
@@ -0,0 +1,32 @@
1
+ export enum LogLevelEnum {
2
+ LOG = 'log',
3
+ ERROR = 'error',
4
+ WARN = 'warn',
5
+ DEBUG = 'debug',
6
+ VERBOSE = 'verbose',
7
+ }
8
+
9
+ export const LOG_LEVEL_DEFAULT = [
10
+ LogLevelEnum.DEBUG,
11
+ LogLevelEnum.ERROR,
12
+ LogLevelEnum.LOG,
13
+ LogLevelEnum.WARN,
14
+ ];
15
+
16
+ export const LOG_LEVEL_ALL = [
17
+ LogLevelEnum.DEBUG,
18
+ LogLevelEnum.ERROR,
19
+ LogLevelEnum.LOG,
20
+ LogLevelEnum.VERBOSE,
21
+ LogLevelEnum.WARN,
22
+ ];
23
+
24
+ export enum LoggerTypeEnum {
25
+ CONSOLE = 'console',
26
+ PINO = 'pino',
27
+ NEST = 'nest-logger',
28
+ }
29
+
30
+ export enum LoggerDefContext {
31
+ NEST_SYSTEM = 'system',
32
+ }
@@ -0,0 +1,11 @@
1
+ export declare enum LoggerEvent {
2
+ QUERY_ERROR = "logger.query_error",
3
+ QUERY_LOG = "logger.query_log",
4
+ QUERY_SLOW = "logger.query_slow",
5
+ ERROR = "logger.error",
6
+ SCHEMA_BUILD = "logger.schema_build",
7
+ WARN = "logger.warn",
8
+ INFO = "logger.info",
9
+ DEBUG = "logger.debug",
10
+ LOG = "logger.log"
11
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoggerEvent = void 0;
4
+ var LoggerEvent;
5
+ (function (LoggerEvent) {
6
+ LoggerEvent["QUERY_ERROR"] = "logger.query_error";
7
+ LoggerEvent["QUERY_LOG"] = "logger.query_log";
8
+ LoggerEvent["QUERY_SLOW"] = "logger.query_slow";
9
+ LoggerEvent["ERROR"] = "logger.error";
10
+ LoggerEvent["SCHEMA_BUILD"] = "logger.schema_build";
11
+ LoggerEvent["WARN"] = "logger.warn";
12
+ LoggerEvent["INFO"] = "logger.info";
13
+ LoggerEvent["DEBUG"] = "logger.debug";
14
+ LoggerEvent["LOG"] = "logger.log";
15
+ })(LoggerEvent || (exports.LoggerEvent = LoggerEvent = {}));
16
+ //# sourceMappingURL=logger.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.event.js","sourceRoot":"","sources":["logger.event.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAUX;AAVD,WAAY,WAAW;IACrB,iDAAkC,CAAA;IAClC,6CAA8B,CAAA;IAC9B,+CAAgC,CAAA;IAChC,qCAAsB,CAAA;IACtB,mDAAoC,CAAA;IACpC,mCAAoB,CAAA;IACpB,mCAAoB,CAAA;IACpB,qCAAsB,CAAA;IACtB,iCAAkB,CAAA;AACpB,CAAC,EAVW,WAAW,2BAAX,WAAW,QAUtB"}
@@ -0,0 +1,11 @@
1
+ export enum LoggerEvent {
2
+ QUERY_ERROR = 'logger.query_error',
3
+ QUERY_LOG = 'logger.query_log',
4
+ QUERY_SLOW = 'logger.query_slow',
5
+ ERROR = 'logger.error',
6
+ SCHEMA_BUILD = 'logger.schema_build',
7
+ WARN = 'logger.warn',
8
+ INFO = 'logger.info',
9
+ DEBUG = 'logger.debug',
10
+ LOG = 'logger.log',
11
+ }
@@ -0,0 +1,3 @@
1
+ import { LogLevel } from '@nestjs/common';
2
+ import type { IImprovedLoggerOptions, ImprovedLoggerService } from './logger-abstract.service.js';
3
+ export declare const AppLoggerFactory: (context: string, loggerLevels?: LogLevel[], loggerType?: string, options?: IImprovedLoggerOptions) => ImprovedLoggerService;
@@ -0,0 +1,66 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AppLoggerFactory = void 0;
37
+ const logger_console_service_js_1 = require("./logger-console.service.js");
38
+ const logger_pino_service_js_1 = require("./logger-pino.service.js");
39
+ const common_1 = require("@nestjs/common");
40
+ const logger_enum_js_1 = require("./logger.enum.js");
41
+ const logger_nest_service_js_1 = require("./logger-nest.service.js");
42
+ const _ = __importStar(require("lodash-es"));
43
+ const logger_helper_js_1 = require("./logger.helper.js");
44
+ exports.AppLoggerFactory = _.memoize((context, loggerLevels = logger_enum_js_1.LOG_LEVEL_DEFAULT, loggerType, options) => {
45
+ let logger;
46
+ switch (loggerType) {
47
+ case logger_enum_js_1.LoggerTypeEnum.CONSOLE:
48
+ logger = new logger_console_service_js_1.ConsoleLogger(context, loggerLevels, options);
49
+ break;
50
+ case logger_enum_js_1.LoggerTypeEnum.PINO:
51
+ logger = new logger_pino_service_js_1.PinoLogger(context, loggerLevels, options);
52
+ break;
53
+ case logger_enum_js_1.LoggerTypeEnum.NEST:
54
+ default:
55
+ logger = new logger_nest_service_js_1.ImprovedNestLogger(context, {
56
+ timestamp: true,
57
+ }, options);
58
+ logger.setLogLevels?.(loggerLevels);
59
+ break;
60
+ }
61
+ common_1.Logger.overrideLogger((0, logger_helper_js_1.getEnvLoggerLevels)());
62
+ common_1.Logger.debug?.(`Use Logger: ${loggerType ??
63
+ `not specified, fallback to default (${logger_enum_js_1.LoggerTypeEnum.NEST})`}`);
64
+ return logger;
65
+ }, (context, loggerLevels, loggerType, options) => `${context}-${loggerLevels?.join('-')}-${loggerType}-${options}`);
66
+ //# sourceMappingURL=logger.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.factory.js","sourceRoot":"","sources":["logger.factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2EAA4D;AAC5D,qEAAsD;AACtD,2CAAkD;AAClD,qDAAqE;AACrE,qEAA8D;AAK9D,6CAA+B;AAC/B,yDAAwD;AAE3C,QAAA,gBAAgB,GAKA,CAAC,CAAC,OAAO,CACpC,CACE,OAAe,EACf,eAA2B,kCAAiB,EAC5C,UAAmB,EACnB,OAAgC,EACT,EAAE;IACzB,IAAI,MAA6B,CAAC;IAClC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,+BAAc,CAAC,OAAO;YACzB,MAAM,GAAG,IAAI,yCAAa,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM;QACR,KAAK,+BAAc,CAAC,IAAI;YACtB,MAAM,GAAG,IAAI,mCAAU,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM;QACR,KAAK,+BAAc,CAAC,IAAI,CAAC;QACzB;YACE,MAAM,GAAG,IAAI,2CAAkB,CAC7B,OAAO,EACP;gBACE,SAAS,EAAE,IAAI;aAChB,EACD,OAAO,CACR,CAAC;YAGF,MAAM,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC;YACpC,MAAM;IACV,CAAC;IAKD,eAAM,CAAC,cAAc,CAAC,IAAA,qCAAkB,GAAE,CAAC,CAAC;IAI5C,eAAM,CAAC,KAAK,EAAE,CACZ,eACE,UAAU;QACV,uCAAuC,+BAAc,CAAC,IAAI,GAC5D,EAAE,CACH,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,EACD,CACE,OAAe,EACf,YAAoC,EACpC,UAA8B,EAC9B,OAA2C,EACnC,EAAE,CAAC,GAAG,OAAO,IAAI,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,IAAI,OAAO,EAAE,CAC9E,CAAC"}