@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.
- package/LICENSE +661 -0
- package/README.md +9 -0
- package/package.json +29 -0
- package/src/__tests__/logger-console.service.spec.ts +136 -0
- package/src/__tests__/logger-nest.service.spec.ts +39 -0
- package/src/__tests__/logger-pino.service.spec.ts +149 -0
- package/src/__tests__/logger.factory.spec.ts +69 -0
- package/src/__tests__/logger.helper.spec.ts +54 -0
- package/src/__tests__/logger.service.spec.ts +78 -0
- package/src/__tests__/tsconfig.json +3 -0
- package/src/__tests__/typeorm-logger.spec.ts +111 -0
- package/src/index.d.ts +10 -0
- package/src/index.js +27 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +10 -0
- package/src/logger-abstract.service.d.ts +65 -0
- package/src/logger-abstract.service.js +91 -0
- package/src/logger-abstract.service.js.map +1 -0
- package/src/logger-abstract.service.ts +210 -0
- package/src/logger-console.service.d.ts +5 -0
- package/src/logger-console.service.js +23 -0
- package/src/logger-console.service.js.map +1 -0
- package/src/logger-console.service.ts +80 -0
- package/src/logger-nest.service.d.ts +35 -0
- package/src/logger-nest.service.js +59 -0
- package/src/logger-nest.service.js.map +1 -0
- package/src/logger-nest.service.ts +151 -0
- package/src/logger-pino.service.d.ts +10 -0
- package/src/logger-pino.service.js +89 -0
- package/src/logger-pino.service.js.map +1 -0
- package/src/logger-pino.service.ts +161 -0
- package/src/logger.enum.d.ts +17 -0
- package/src/logger.enum.js +35 -0
- package/src/logger.enum.js.map +1 -0
- package/src/logger.enum.ts +32 -0
- package/src/logger.event.d.ts +11 -0
- package/src/logger.event.js +16 -0
- package/src/logger.event.js.map +1 -0
- package/src/logger.event.ts +11 -0
- package/src/logger.factory.d.ts +3 -0
- package/src/logger.factory.js +66 -0
- package/src/logger.factory.js.map +1 -0
- package/src/logger.factory.ts +70 -0
- package/src/logger.helper.d.ts +4 -0
- package/src/logger.helper.js +36 -0
- package/src/logger.helper.js.map +1 -0
- package/src/logger.helper.ts +40 -0
- package/src/logger.service.d.ts +3 -0
- package/src/logger.service.js +25 -0
- package/src/logger.service.js.map +1 -0
- package/src/logger.service.ts +41 -0
- package/src/typeorm-logger.d.ts +13 -0
- package/src/typeorm-logger.js +82 -0
- package/src/typeorm-logger.js.map +1 -0
- 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"}
|