@we-are-singular/logger 1.0.2 → 2.1.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/.build/LoggerFactory.d.ts +26 -0
- package/.build/LoggerFactory.d.ts.map +1 -0
- package/.build/fastify/FastifyLoggerClass.d.ts +35 -0
- package/.build/fastify/FastifyLoggerClass.d.ts.map +1 -0
- package/.build/index.cjs +104 -4
- package/.build/index.cjs.map +1 -1
- package/.build/index.d.ts +3 -1
- package/.build/index.d.ts.map +1 -1
- package/.build/index.mjs +102 -5
- package/.build/index.mjs.map +1 -1
- package/.build/nestjs/LoggerService.d.ts +10 -6
- package/.build/nestjs/LoggerService.d.ts.map +1 -1
- package/.build/pino.instance.d.ts +2 -2
- package/.build/pino.instance.d.ts.map +1 -1
- package/README.md +104 -0
- package/package.json +16 -12
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { NestJSLoggerClass } from "./nestjs/LoggerService";
|
|
2
|
+
import { FastifyLoggerClass } from "./fastify/FastifyLoggerClass";
|
|
3
|
+
/**
|
|
4
|
+
* Factory methods for creating framework-specific logger instances
|
|
5
|
+
*/
|
|
6
|
+
export declare class LoggerFactory {
|
|
7
|
+
/**
|
|
8
|
+
* Factory method to create a NestJS logger instance
|
|
9
|
+
* @param module Optional module name
|
|
10
|
+
* @returns NestJSLoggerClass instance
|
|
11
|
+
* @example
|
|
12
|
+
* const nestLogger = LoggerFactory.forNestJS("MyModule")
|
|
13
|
+
*/
|
|
14
|
+
static forNestJS(module?: string): NestJSLoggerClass;
|
|
15
|
+
/**
|
|
16
|
+
* Factory method to create a Fastify logger instance
|
|
17
|
+
* @param app Optional app name
|
|
18
|
+
* @param module Optional module name
|
|
19
|
+
* @returns FastifyLoggerClass instance
|
|
20
|
+
* @example
|
|
21
|
+
* const fastifyLogger = LoggerFactory.forFastify("MyApp", "api")
|
|
22
|
+
* const app = fastify({ logger: fastifyLogger })
|
|
23
|
+
*/
|
|
24
|
+
static forFastify(app?: string, module?: string): FastifyLoggerClass;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=LoggerFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggerFactory.d.ts","sourceRoot":"","sources":["../src/LoggerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAKpD;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB;CAGrE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { FastifyBaseLogger } from "fastify";
|
|
2
|
+
/**
|
|
3
|
+
* Fastify logger class that implements FastifyBaseLogger interface
|
|
4
|
+
* @example
|
|
5
|
+
* const fastifyLogger = new FastifyLoggerClass("MyApp", "api")
|
|
6
|
+
* const app = fastify({ logger: fastifyLogger })
|
|
7
|
+
*/
|
|
8
|
+
export declare class FastifyLoggerClass implements FastifyBaseLogger {
|
|
9
|
+
private logger;
|
|
10
|
+
level: string;
|
|
11
|
+
constructor(app?: string, module?: string, context?: string);
|
|
12
|
+
/**
|
|
13
|
+
* Create a child logger instance
|
|
14
|
+
* @returns New FastifyLoggerClass instance
|
|
15
|
+
*/
|
|
16
|
+
child(): FastifyBaseLogger;
|
|
17
|
+
/**
|
|
18
|
+
* Helper method to handle log method arguments
|
|
19
|
+
*/
|
|
20
|
+
private getLogArgs;
|
|
21
|
+
info(message: string | object, ...args: unknown[]): void;
|
|
22
|
+
info(obj: object, message?: string, ...args: unknown[]): void;
|
|
23
|
+
error(message: string | object, ...args: unknown[]): void;
|
|
24
|
+
error(obj: object, message?: string, ...args: unknown[]): void;
|
|
25
|
+
debug(message: string | object, ...args: unknown[]): void;
|
|
26
|
+
debug(obj: object, message?: string, ...args: unknown[]): void;
|
|
27
|
+
fatal(message: string | object, ...args: unknown[]): void;
|
|
28
|
+
fatal(obj: object, message?: string, ...args: unknown[]): void;
|
|
29
|
+
warn(message: string | object, ...args: unknown[]): void;
|
|
30
|
+
warn(obj: object, message?: string, ...args: unknown[]): void;
|
|
31
|
+
trace(message: string | object, ...args: unknown[]): void;
|
|
32
|
+
trace(obj: object, message?: string, ...args: unknown[]): void;
|
|
33
|
+
silent(): void;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=FastifyLoggerClass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FastifyLoggerClass.d.ts","sourceRoot":"","sources":["../../src/fastify/FastifyLoggerClass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAGhD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IAC1D,OAAO,CAAC,MAAM,CAAa;IACpB,KAAK,EAAE,MAAM,CAAA;gBAER,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAK3D;;;OAGG;IACH,KAAK,IAAI,iBAAiB;IAO1B;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IACxD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM7D,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IACzD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM9D,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IACzD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM9D,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IACzD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM9D,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IACxD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM7D,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IACzD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM9D,MAAM,IAAI,IAAI;CAGf"}
|
package/.build/index.cjs
CHANGED
|
@@ -103,13 +103,13 @@ class LoggerClass {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
class
|
|
106
|
+
class NestJSLoggerClass {
|
|
107
107
|
constructor(withLogger) {
|
|
108
108
|
var _a;
|
|
109
109
|
this.logger = withLogger !== null && withLogger !== void 0 ? withLogger : new LoggerClass();
|
|
110
110
|
this.logger.pino.level = (_a = process.env.LOG_LEVEL) !== null && _a !== void 0 ? _a : "info";
|
|
111
111
|
}
|
|
112
|
-
static forFeature(module, useClass =
|
|
112
|
+
static forFeature(module, useClass = NestJSLoggerClass) {
|
|
113
113
|
return {
|
|
114
114
|
provide: useClass,
|
|
115
115
|
useFactory: () => new useClass().withModule(module),
|
|
@@ -137,10 +137,10 @@ class LoggerService {
|
|
|
137
137
|
},
|
|
138
138
|
};
|
|
139
139
|
}
|
|
140
|
-
withModule(module, useClass =
|
|
140
|
+
withModule(module, useClass = NestJSLoggerClass) {
|
|
141
141
|
return new useClass(this.logger.fork().setModule(module));
|
|
142
142
|
}
|
|
143
|
-
withContext(context, useClass =
|
|
143
|
+
withContext(context, useClass = NestJSLoggerClass) {
|
|
144
144
|
return new useClass(this.logger.fork().setContext(context));
|
|
145
145
|
}
|
|
146
146
|
log(msg, ...extra) {
|
|
@@ -159,8 +159,108 @@ class LoggerService {
|
|
|
159
159
|
this.logger.trace(msg, ...extra);
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* @deprecated Use NestJSLoggerClass instead. This alias will be removed in a future version.
|
|
164
|
+
*/
|
|
165
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
166
|
+
const LoggerService = NestJSLoggerClass;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Fastify logger class that implements FastifyBaseLogger interface
|
|
170
|
+
* @example
|
|
171
|
+
* const fastifyLogger = new FastifyLoggerClass("MyApp", "api")
|
|
172
|
+
* const app = fastify({ logger: fastifyLogger })
|
|
173
|
+
*/
|
|
174
|
+
class FastifyLoggerClass {
|
|
175
|
+
constructor(app, module, context) {
|
|
176
|
+
var _a;
|
|
177
|
+
this.logger = new LoggerClass(app, module, context);
|
|
178
|
+
this.level = (_a = process.env.LOG_LEVEL) !== null && _a !== void 0 ? _a : "info";
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Create a child logger instance
|
|
182
|
+
* @returns New FastifyLoggerClass instance
|
|
183
|
+
*/
|
|
184
|
+
child() {
|
|
185
|
+
const childLogger = new FastifyLoggerClass();
|
|
186
|
+
childLogger.logger = this.logger.fork();
|
|
187
|
+
childLogger.level = this.level;
|
|
188
|
+
return childLogger;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Helper method to handle log method arguments
|
|
192
|
+
*/
|
|
193
|
+
getLogArgs(msgOrObj, args) {
|
|
194
|
+
if (typeof msgOrObj === "string") {
|
|
195
|
+
return [msgOrObj, args.length > 0 ? args[0] : undefined];
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
const message = typeof args[0] === "string" ? args[0] : JSON.stringify(msgOrObj);
|
|
199
|
+
return [message, msgOrObj];
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
info(msgOrObj, ...args) {
|
|
203
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
204
|
+
this.logger.info(msg, data);
|
|
205
|
+
}
|
|
206
|
+
error(msgOrObj, ...args) {
|
|
207
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
208
|
+
this.logger.error(msg, data);
|
|
209
|
+
}
|
|
210
|
+
debug(msgOrObj, ...args) {
|
|
211
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
212
|
+
this.logger.debug(msg, data);
|
|
213
|
+
}
|
|
214
|
+
fatal(msgOrObj, ...args) {
|
|
215
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
216
|
+
this.logger.fatal(msg, data);
|
|
217
|
+
}
|
|
218
|
+
warn(msgOrObj, ...args) {
|
|
219
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
220
|
+
this.logger.warn(msg, data);
|
|
221
|
+
}
|
|
222
|
+
trace(msgOrObj, ...args) {
|
|
223
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
224
|
+
this.logger.trace(msg, data);
|
|
225
|
+
}
|
|
226
|
+
silent() {
|
|
227
|
+
// No-op for silent level
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Factory methods for creating framework-specific logger instances
|
|
233
|
+
*/
|
|
234
|
+
class LoggerFactory {
|
|
235
|
+
/**
|
|
236
|
+
* Factory method to create a NestJS logger instance
|
|
237
|
+
* @param module Optional module name
|
|
238
|
+
* @returns NestJSLoggerClass instance
|
|
239
|
+
* @example
|
|
240
|
+
* const nestLogger = LoggerFactory.forNestJS("MyModule")
|
|
241
|
+
*/
|
|
242
|
+
static forNestJS(module) {
|
|
243
|
+
const logger = new NestJSLoggerClass();
|
|
244
|
+
return module ? logger.withModule(module) : logger;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Factory method to create a Fastify logger instance
|
|
248
|
+
* @param app Optional app name
|
|
249
|
+
* @param module Optional module name
|
|
250
|
+
* @returns FastifyLoggerClass instance
|
|
251
|
+
* @example
|
|
252
|
+
* const fastifyLogger = LoggerFactory.forFastify("MyApp", "api")
|
|
253
|
+
* const app = fastify({ logger: fastifyLogger })
|
|
254
|
+
*/
|
|
255
|
+
static forFastify(app, module) {
|
|
256
|
+
return new FastifyLoggerClass(app, module);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
162
259
|
|
|
260
|
+
exports.FastifyLoggerClass = FastifyLoggerClass;
|
|
163
261
|
exports.LoggerClass = LoggerClass;
|
|
262
|
+
exports.LoggerFactory = LoggerFactory;
|
|
164
263
|
exports.LoggerService = LoggerService;
|
|
264
|
+
exports.NestJSLoggerClass = NestJSLoggerClass;
|
|
165
265
|
exports.getLogger = getLogger;
|
|
166
266
|
//# sourceMappingURL=index.cjs.map
|
package/.build/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/pino.instance.ts","../src/LoggerClass.ts","../src/nestjs/LoggerService.ts"],"sourcesContent":["import pino, { LoggerOptions, LogDescriptor, stdTimeFunctions, type Logger } from \"pino\"\nimport pretty from \"pino-pretty\"\n\nconst loggerOptions = {\n level: \"trace\",\n redact: [\"user.password\", \"options.token\"], // example of a redaction key\n timestamp: stdTimeFunctions.isoTime,\n} satisfies LoggerOptions\n\nconst loggerFactory = (): Logger => {\n if (process.env.NODE_ENV !== \"production\" || parseInt(process.env.LOG_HUMAN ?? \"\") === 1) {\n return pino(\n loggerOptions,\n pretty({\n minimumLevel: (process.env.LOG_LEVEL as pino.Level) ?? \"trace\",\n sync: process.env.NODE_ENV === \"test\",\n colorize: true,\n colorizeObjects: true,\n singleLine: false,\n ignore: \"pid,hostname,app,module,context\",\n customPrettifiers: {\n //pid: (log) => \"{log.pid}\",\n //app: (name) => name,\n },\n messageFormat: (log: LogDescriptor) => {\n const { app, module, context, messageKey = \"msg\" }: LogDescriptor = log\n return `[${[app, module, context].filter(Boolean).join(\"::\")}] ${\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n log[messageKey as keyof LogDescriptor]\n }`\n },\n })\n )\n }\n\n return pino({\n ...loggerOptions,\n level: process.env.LOG_LEVEL ?? \"info\",\n messageKey: \"message\",\n formatters: {\n level: (label) => {\n return { level: label }\n },\n },\n })\n}\n\n/**\n * Main logger instance\n */\nconst mainLogger = loggerFactory()\n\n/**\n * export the main logger instance\n */\nexport const getLogger = () => mainLogger\n","import { getLogger } from \"./pino.instance\"\n\n/**\n * Logger class\n * @param app\n * @param module\n * @param context\n * @constructor\n * @example\n * const logger = new Logger(\"test\")\n * logger.info(\"hello world\")\n * logger.addModule(\"some module\")\n * logger.info(\"hello world\", { user: { id: 1, name: \"John Doe\" } })\n */\nexport class LoggerClass {\n private app = \"\"\n private module = \"\"\n private context = \"\"\n public pino = getLogger()\n constructor(app?: string, module?: string, context?: string) {\n this.app = app ?? \"\"\n this.module = module ?? \"\"\n this.context = context ?? \"\"\n this.updateLogger()\n }\n\n private updateLogger() {\n this.pino = getLogger().child({\n ...(this.app && { app: this.app }),\n ...(this.module && { module: this.module }),\n ...(this.context && { context: this.context }),\n })\n\n return this\n }\n\n fork() {\n return new LoggerClass(this.app, this.module, this.context)\n }\n\n setModule(module: string) {\n this.module = module\n return this.updateLogger()\n }\n\n setContext(context: string) {\n this.context = context\n return this.updateLogger()\n }\n\n trace(message: string, data?: unknown) {\n this.pino.trace(data || null, message)\n }\n\n debug(message: string, data?: unknown) {\n this.pino.debug(data || null, message)\n }\n\n info(message: string, data?: unknown) {\n this.pino.info(data || null, message)\n }\n\n warn(message: string, data?: unknown) {\n this.pino.warn(data || null, message)\n }\n\n error(message: string, data?: unknown) {\n this.pino.error(data || null, message)\n }\n\n fatal(message: string, data?: unknown) {\n this.pino.fatal(data || null, message)\n }\n}\n","import { type LoggerService as NestLoggerService } from \"@nestjs/common\"\nimport { LoggerClass } from \"../LoggerClass\"\n\nexport class LoggerService {\n private logger: LoggerClass\n\n constructor(withLogger?: LoggerClass) {\n this.logger = withLogger ?? new LoggerClass()\n this.logger.pino.level = process.env.LOG_LEVEL ?? \"info\"\n }\n\n static forFeature(module: string, useClass: typeof LoggerService = LoggerService) {\n return {\n provide: useClass,\n useFactory: () => new useClass().withModule(module),\n }\n }\n\n /**\n * This is a workaround to create an interface complying to NestJS's LoggerService for internal logging\n */\n forRoot(): NestLoggerService {\n return {\n log: (msg, context: string, extra) => {\n this.logger.info(msg, { context, extra })\n },\n error: (msg, stack: unknown, context: string) => {\n this.logger.error(String(stack), { context, error: msg })\n },\n warn: (msg, context: string) => {\n this.logger.warn(msg, { context })\n },\n debug: (msg, context: string) => {\n this.logger.debug(msg, { context })\n },\n verbose: (msg, context: string) => {\n this.logger.trace(msg, { context })\n },\n }\n }\n\n withModule(module: string, useClass: typeof LoggerService = LoggerService) {\n return new useClass(this.logger.fork().setModule(module))\n }\n\n withContext(context: string, useClass: typeof LoggerService = LoggerService) {\n return new useClass(this.logger.fork().setContext(context))\n }\n\n log(msg: string, ...extra: unknown[]) {\n this.logger.info(msg, ...extra)\n }\n\n error(msg: string, ...extra: unknown[]) {\n this.logger.error(msg, ...extra)\n }\n\n warn(msg: string, ...extra: unknown[]) {\n this.logger.warn(msg, ...extra)\n }\n\n debug(msg: string, ...extra: unknown[]) {\n this.logger.debug(msg, ...extra)\n }\n\n verbose(msg: string, ...extra: unknown[]) {\n this.logger.trace(msg, ...extra)\n }\n}\n"],"names":["stdTimeFunctions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/pino.instance.ts","../src/LoggerClass.ts","../src/nestjs/LoggerService.ts","../src/fastify/FastifyLoggerClass.ts","../src/LoggerFactory.ts"],"sourcesContent":["import pino, { LoggerOptions, LogDescriptor, stdTimeFunctions, type Logger } from \"pino\"\nimport pretty from \"pino-pretty\"\n\nconst loggerOptions = {\n level: \"trace\",\n redact: [\"user.password\", \"options.token\"], // example of a redaction key\n timestamp: stdTimeFunctions.isoTime,\n} satisfies LoggerOptions\n\nconst loggerFactory = (): Logger => {\n if (process.env.NODE_ENV !== \"production\" || parseInt(process.env.LOG_HUMAN ?? \"\") === 1) {\n return pino(\n loggerOptions,\n pretty({\n minimumLevel: (process.env.LOG_LEVEL as pino.Level) ?? \"trace\",\n sync: process.env.NODE_ENV === \"test\",\n colorize: true,\n colorizeObjects: true,\n singleLine: false,\n ignore: \"pid,hostname,app,module,context\",\n customPrettifiers: {\n //pid: (log) => \"{log.pid}\",\n //app: (name) => name,\n },\n messageFormat: (log: LogDescriptor) => {\n const { app, module, context, messageKey = \"msg\" }: LogDescriptor = log\n return `[${[app, module, context].filter(Boolean).join(\"::\")}] ${\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n log[messageKey as keyof LogDescriptor]\n }`\n },\n })\n )\n }\n\n return pino({\n ...loggerOptions,\n level: process.env.LOG_LEVEL ?? \"info\",\n messageKey: \"message\",\n formatters: {\n level: (label) => {\n return { level: label }\n },\n },\n })\n}\n\n/**\n * Main logger instance\n */\nconst mainLogger = loggerFactory()\n\n/**\n * export the main logger instance\n */\nexport const getLogger = () => mainLogger\n","import { getLogger } from \"./pino.instance\"\n\n/**\n * Logger class\n * @param app\n * @param module\n * @param context\n * @constructor\n * @example\n * const logger = new Logger(\"test\")\n * logger.info(\"hello world\")\n * logger.addModule(\"some module\")\n * logger.info(\"hello world\", { user: { id: 1, name: \"John Doe\" } })\n */\nexport class LoggerClass {\n private app = \"\"\n private module = \"\"\n private context = \"\"\n public pino = getLogger()\n constructor(app?: string, module?: string, context?: string) {\n this.app = app ?? \"\"\n this.module = module ?? \"\"\n this.context = context ?? \"\"\n this.updateLogger()\n }\n\n private updateLogger() {\n this.pino = getLogger().child({\n ...(this.app && { app: this.app }),\n ...(this.module && { module: this.module }),\n ...(this.context && { context: this.context }),\n })\n\n return this\n }\n\n fork() {\n return new LoggerClass(this.app, this.module, this.context)\n }\n\n setModule(module: string) {\n this.module = module\n return this.updateLogger()\n }\n\n setContext(context: string) {\n this.context = context\n return this.updateLogger()\n }\n\n trace(message: string, data?: unknown) {\n this.pino.trace(data || null, message)\n }\n\n debug(message: string, data?: unknown) {\n this.pino.debug(data || null, message)\n }\n\n info(message: string, data?: unknown) {\n this.pino.info(data || null, message)\n }\n\n warn(message: string, data?: unknown) {\n this.pino.warn(data || null, message)\n }\n\n error(message: string, data?: unknown) {\n this.pino.error(data || null, message)\n }\n\n fatal(message: string, data?: unknown) {\n this.pino.fatal(data || null, message)\n }\n}\n","import { type LoggerService as NestLoggerService } from \"@nestjs/common\"\nimport { LoggerClass } from \"../LoggerClass\"\n\nexport class NestJSLoggerClass {\n private logger: LoggerClass\n\n constructor(withLogger?: LoggerClass) {\n this.logger = withLogger ?? new LoggerClass()\n this.logger.pino.level = process.env.LOG_LEVEL ?? \"info\"\n }\n\n static forFeature(module: string, useClass: typeof NestJSLoggerClass = NestJSLoggerClass) {\n return {\n provide: useClass,\n useFactory: () => new useClass().withModule(module),\n }\n }\n\n /**\n * This is a workaround to create an interface complying to NestJS's LoggerService for internal logging\n */\n forRoot(): NestLoggerService {\n return {\n log: (msg, context: string, extra) => {\n this.logger.info(msg, { context, extra })\n },\n error: (msg, stack: unknown, context: string) => {\n this.logger.error(String(stack), { context, error: msg })\n },\n warn: (msg, context: string) => {\n this.logger.warn(msg, { context })\n },\n debug: (msg, context: string) => {\n this.logger.debug(msg, { context })\n },\n verbose: (msg, context: string) => {\n this.logger.trace(msg, { context })\n },\n }\n }\n\n withModule(module: string, useClass: typeof NestJSLoggerClass = NestJSLoggerClass) {\n return new useClass(this.logger.fork().setModule(module))\n }\n\n withContext(context: string, useClass: typeof NestJSLoggerClass = NestJSLoggerClass) {\n return new useClass(this.logger.fork().setContext(context))\n }\n\n log(msg: string, ...extra: unknown[]) {\n this.logger.info(msg, ...extra)\n }\n\n error(msg: string, ...extra: unknown[]) {\n this.logger.error(msg, ...extra)\n }\n\n warn(msg: string, ...extra: unknown[]) {\n this.logger.warn(msg, ...extra)\n }\n\n debug(msg: string, ...extra: unknown[]) {\n this.logger.debug(msg, ...extra)\n }\n\n verbose(msg: string, ...extra: unknown[]) {\n this.logger.trace(msg, ...extra)\n }\n}\n\n/**\n * @deprecated Use NestJSLoggerClass instead. This alias will be removed in a future version.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const LoggerService = NestJSLoggerClass\n","import type { FastifyBaseLogger } from \"fastify\"\nimport { LoggerClass } from \"../LoggerClass\"\n\n/**\n * Fastify logger class that implements FastifyBaseLogger interface\n * @example\n * const fastifyLogger = new FastifyLoggerClass(\"MyApp\", \"api\")\n * const app = fastify({ logger: fastifyLogger })\n */\nexport class FastifyLoggerClass implements FastifyBaseLogger {\n private logger: LoggerClass\n public level: string\n\n constructor(app?: string, module?: string, context?: string) {\n this.logger = new LoggerClass(app, module, context)\n this.level = process.env.LOG_LEVEL ?? \"info\"\n }\n\n /**\n * Create a child logger instance\n * @returns New FastifyLoggerClass instance\n */\n child(): FastifyBaseLogger {\n const childLogger = new FastifyLoggerClass()\n childLogger.logger = this.logger.fork()\n childLogger.level = this.level\n return childLogger\n }\n\n /**\n * Helper method to handle log method arguments\n */\n private getLogArgs(msgOrObj: string | object, args: unknown[]): [string, unknown?] {\n if (typeof msgOrObj === \"string\") {\n return [msgOrObj, args.length > 0 ? args[0] : undefined]\n } else {\n const message = typeof args[0] === \"string\" ? args[0] : JSON.stringify(msgOrObj)\n return [message, msgOrObj]\n }\n }\n\n info(message: string | object, ...args: unknown[]): void\n info(obj: object, message?: string, ...args: unknown[]): void\n info(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.info(msg, data)\n }\n\n error(message: string | object, ...args: unknown[]): void\n error(obj: object, message?: string, ...args: unknown[]): void\n error(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.error(msg, data)\n }\n\n debug(message: string | object, ...args: unknown[]): void\n debug(obj: object, message?: string, ...args: unknown[]): void\n debug(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.debug(msg, data)\n }\n\n fatal(message: string | object, ...args: unknown[]): void\n fatal(obj: object, message?: string, ...args: unknown[]): void\n fatal(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.fatal(msg, data)\n }\n\n warn(message: string | object, ...args: unknown[]): void\n warn(obj: object, message?: string, ...args: unknown[]): void\n warn(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.warn(msg, data)\n }\n\n trace(message: string | object, ...args: unknown[]): void\n trace(obj: object, message?: string, ...args: unknown[]): void\n trace(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.trace(msg, data)\n }\n\n silent(): void {\n // No-op for silent level\n }\n}\n","import { NestJSLoggerClass } from \"./nestjs/LoggerService\"\nimport { FastifyLoggerClass } from \"./fastify/FastifyLoggerClass\"\n\n/**\n * Factory methods for creating framework-specific logger instances\n */\nexport class LoggerFactory {\n /**\n * Factory method to create a NestJS logger instance\n * @param module Optional module name\n * @returns NestJSLoggerClass instance\n * @example\n * const nestLogger = LoggerFactory.forNestJS(\"MyModule\")\n */\n static forNestJS(module?: string): NestJSLoggerClass {\n const logger = new NestJSLoggerClass()\n return module ? logger.withModule(module) : logger\n }\n\n /**\n * Factory method to create a Fastify logger instance\n * @param app Optional app name\n * @param module Optional module name\n * @returns FastifyLoggerClass instance\n * @example\n * const fastifyLogger = LoggerFactory.forFastify(\"MyApp\", \"api\")\n * const app = fastify({ logger: fastifyLogger })\n */\n static forFastify(app?: string, module?: string): FastifyLoggerClass {\n return new FastifyLoggerClass(app, module)\n }\n}\n"],"names":["stdTimeFunctions"],"mappings":"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"}
|
package/.build/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { getLogger } from "./pino.instance";
|
|
2
|
-
export { LoggerService } from "./nestjs/LoggerService";
|
|
2
|
+
export { LoggerService, NestJSLoggerClass } from "./nestjs/LoggerService";
|
|
3
|
+
export { FastifyLoggerClass } from "./fastify/FastifyLoggerClass";
|
|
3
4
|
export { LoggerClass } from "./LoggerClass";
|
|
5
|
+
export { LoggerFactory } from "./LoggerFactory";
|
|
4
6
|
//# sourceMappingURL=index.d.ts.map
|
package/.build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
|
package/.build/index.mjs
CHANGED
|
@@ -101,13 +101,13 @@ class LoggerClass {
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
class
|
|
104
|
+
class NestJSLoggerClass {
|
|
105
105
|
constructor(withLogger) {
|
|
106
106
|
var _a;
|
|
107
107
|
this.logger = withLogger !== null && withLogger !== void 0 ? withLogger : new LoggerClass();
|
|
108
108
|
this.logger.pino.level = (_a = process.env.LOG_LEVEL) !== null && _a !== void 0 ? _a : "info";
|
|
109
109
|
}
|
|
110
|
-
static forFeature(module, useClass =
|
|
110
|
+
static forFeature(module, useClass = NestJSLoggerClass) {
|
|
111
111
|
return {
|
|
112
112
|
provide: useClass,
|
|
113
113
|
useFactory: () => new useClass().withModule(module),
|
|
@@ -135,10 +135,10 @@ class LoggerService {
|
|
|
135
135
|
},
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
|
-
withModule(module, useClass =
|
|
138
|
+
withModule(module, useClass = NestJSLoggerClass) {
|
|
139
139
|
return new useClass(this.logger.fork().setModule(module));
|
|
140
140
|
}
|
|
141
|
-
withContext(context, useClass =
|
|
141
|
+
withContext(context, useClass = NestJSLoggerClass) {
|
|
142
142
|
return new useClass(this.logger.fork().setContext(context));
|
|
143
143
|
}
|
|
144
144
|
log(msg, ...extra) {
|
|
@@ -157,6 +157,103 @@ class LoggerService {
|
|
|
157
157
|
this.logger.trace(msg, ...extra);
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* @deprecated Use NestJSLoggerClass instead. This alias will be removed in a future version.
|
|
162
|
+
*/
|
|
163
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
164
|
+
const LoggerService = NestJSLoggerClass;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Fastify logger class that implements FastifyBaseLogger interface
|
|
168
|
+
* @example
|
|
169
|
+
* const fastifyLogger = new FastifyLoggerClass("MyApp", "api")
|
|
170
|
+
* const app = fastify({ logger: fastifyLogger })
|
|
171
|
+
*/
|
|
172
|
+
class FastifyLoggerClass {
|
|
173
|
+
constructor(app, module, context) {
|
|
174
|
+
var _a;
|
|
175
|
+
this.logger = new LoggerClass(app, module, context);
|
|
176
|
+
this.level = (_a = process.env.LOG_LEVEL) !== null && _a !== void 0 ? _a : "info";
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Create a child logger instance
|
|
180
|
+
* @returns New FastifyLoggerClass instance
|
|
181
|
+
*/
|
|
182
|
+
child() {
|
|
183
|
+
const childLogger = new FastifyLoggerClass();
|
|
184
|
+
childLogger.logger = this.logger.fork();
|
|
185
|
+
childLogger.level = this.level;
|
|
186
|
+
return childLogger;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Helper method to handle log method arguments
|
|
190
|
+
*/
|
|
191
|
+
getLogArgs(msgOrObj, args) {
|
|
192
|
+
if (typeof msgOrObj === "string") {
|
|
193
|
+
return [msgOrObj, args.length > 0 ? args[0] : undefined];
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
const message = typeof args[0] === "string" ? args[0] : JSON.stringify(msgOrObj);
|
|
197
|
+
return [message, msgOrObj];
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
info(msgOrObj, ...args) {
|
|
201
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
202
|
+
this.logger.info(msg, data);
|
|
203
|
+
}
|
|
204
|
+
error(msgOrObj, ...args) {
|
|
205
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
206
|
+
this.logger.error(msg, data);
|
|
207
|
+
}
|
|
208
|
+
debug(msgOrObj, ...args) {
|
|
209
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
210
|
+
this.logger.debug(msg, data);
|
|
211
|
+
}
|
|
212
|
+
fatal(msgOrObj, ...args) {
|
|
213
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
214
|
+
this.logger.fatal(msg, data);
|
|
215
|
+
}
|
|
216
|
+
warn(msgOrObj, ...args) {
|
|
217
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
218
|
+
this.logger.warn(msg, data);
|
|
219
|
+
}
|
|
220
|
+
trace(msgOrObj, ...args) {
|
|
221
|
+
const [msg, data] = this.getLogArgs(msgOrObj, args);
|
|
222
|
+
this.logger.trace(msg, data);
|
|
223
|
+
}
|
|
224
|
+
silent() {
|
|
225
|
+
// No-op for silent level
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Factory methods for creating framework-specific logger instances
|
|
231
|
+
*/
|
|
232
|
+
class LoggerFactory {
|
|
233
|
+
/**
|
|
234
|
+
* Factory method to create a NestJS logger instance
|
|
235
|
+
* @param module Optional module name
|
|
236
|
+
* @returns NestJSLoggerClass instance
|
|
237
|
+
* @example
|
|
238
|
+
* const nestLogger = LoggerFactory.forNestJS("MyModule")
|
|
239
|
+
*/
|
|
240
|
+
static forNestJS(module) {
|
|
241
|
+
const logger = new NestJSLoggerClass();
|
|
242
|
+
return module ? logger.withModule(module) : logger;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Factory method to create a Fastify logger instance
|
|
246
|
+
* @param app Optional app name
|
|
247
|
+
* @param module Optional module name
|
|
248
|
+
* @returns FastifyLoggerClass instance
|
|
249
|
+
* @example
|
|
250
|
+
* const fastifyLogger = LoggerFactory.forFastify("MyApp", "api")
|
|
251
|
+
* const app = fastify({ logger: fastifyLogger })
|
|
252
|
+
*/
|
|
253
|
+
static forFastify(app, module) {
|
|
254
|
+
return new FastifyLoggerClass(app, module);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
160
257
|
|
|
161
|
-
export { LoggerClass, LoggerService, getLogger };
|
|
258
|
+
export { FastifyLoggerClass, LoggerClass, LoggerFactory, LoggerService, NestJSLoggerClass, getLogger };
|
|
162
259
|
//# sourceMappingURL=index.mjs.map
|
package/.build/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/pino.instance.ts","../src/LoggerClass.ts","../src/nestjs/LoggerService.ts"],"sourcesContent":["import pino, { LoggerOptions, LogDescriptor, stdTimeFunctions, type Logger } from \"pino\"\nimport pretty from \"pino-pretty\"\n\nconst loggerOptions = {\n level: \"trace\",\n redact: [\"user.password\", \"options.token\"], // example of a redaction key\n timestamp: stdTimeFunctions.isoTime,\n} satisfies LoggerOptions\n\nconst loggerFactory = (): Logger => {\n if (process.env.NODE_ENV !== \"production\" || parseInt(process.env.LOG_HUMAN ?? \"\") === 1) {\n return pino(\n loggerOptions,\n pretty({\n minimumLevel: (process.env.LOG_LEVEL as pino.Level) ?? \"trace\",\n sync: process.env.NODE_ENV === \"test\",\n colorize: true,\n colorizeObjects: true,\n singleLine: false,\n ignore: \"pid,hostname,app,module,context\",\n customPrettifiers: {\n //pid: (log) => \"{log.pid}\",\n //app: (name) => name,\n },\n messageFormat: (log: LogDescriptor) => {\n const { app, module, context, messageKey = \"msg\" }: LogDescriptor = log\n return `[${[app, module, context].filter(Boolean).join(\"::\")}] ${\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n log[messageKey as keyof LogDescriptor]\n }`\n },\n })\n )\n }\n\n return pino({\n ...loggerOptions,\n level: process.env.LOG_LEVEL ?? \"info\",\n messageKey: \"message\",\n formatters: {\n level: (label) => {\n return { level: label }\n },\n },\n })\n}\n\n/**\n * Main logger instance\n */\nconst mainLogger = loggerFactory()\n\n/**\n * export the main logger instance\n */\nexport const getLogger = () => mainLogger\n","import { getLogger } from \"./pino.instance\"\n\n/**\n * Logger class\n * @param app\n * @param module\n * @param context\n * @constructor\n * @example\n * const logger = new Logger(\"test\")\n * logger.info(\"hello world\")\n * logger.addModule(\"some module\")\n * logger.info(\"hello world\", { user: { id: 1, name: \"John Doe\" } })\n */\nexport class LoggerClass {\n private app = \"\"\n private module = \"\"\n private context = \"\"\n public pino = getLogger()\n constructor(app?: string, module?: string, context?: string) {\n this.app = app ?? \"\"\n this.module = module ?? \"\"\n this.context = context ?? \"\"\n this.updateLogger()\n }\n\n private updateLogger() {\n this.pino = getLogger().child({\n ...(this.app && { app: this.app }),\n ...(this.module && { module: this.module }),\n ...(this.context && { context: this.context }),\n })\n\n return this\n }\n\n fork() {\n return new LoggerClass(this.app, this.module, this.context)\n }\n\n setModule(module: string) {\n this.module = module\n return this.updateLogger()\n }\n\n setContext(context: string) {\n this.context = context\n return this.updateLogger()\n }\n\n trace(message: string, data?: unknown) {\n this.pino.trace(data || null, message)\n }\n\n debug(message: string, data?: unknown) {\n this.pino.debug(data || null, message)\n }\n\n info(message: string, data?: unknown) {\n this.pino.info(data || null, message)\n }\n\n warn(message: string, data?: unknown) {\n this.pino.warn(data || null, message)\n }\n\n error(message: string, data?: unknown) {\n this.pino.error(data || null, message)\n }\n\n fatal(message: string, data?: unknown) {\n this.pino.fatal(data || null, message)\n }\n}\n","import { type LoggerService as NestLoggerService } from \"@nestjs/common\"\nimport { LoggerClass } from \"../LoggerClass\"\n\nexport class LoggerService {\n private logger: LoggerClass\n\n constructor(withLogger?: LoggerClass) {\n this.logger = withLogger ?? new LoggerClass()\n this.logger.pino.level = process.env.LOG_LEVEL ?? \"info\"\n }\n\n static forFeature(module: string, useClass: typeof LoggerService = LoggerService) {\n return {\n provide: useClass,\n useFactory: () => new useClass().withModule(module),\n }\n }\n\n /**\n * This is a workaround to create an interface complying to NestJS's LoggerService for internal logging\n */\n forRoot(): NestLoggerService {\n return {\n log: (msg, context: string, extra) => {\n this.logger.info(msg, { context, extra })\n },\n error: (msg, stack: unknown, context: string) => {\n this.logger.error(String(stack), { context, error: msg })\n },\n warn: (msg, context: string) => {\n this.logger.warn(msg, { context })\n },\n debug: (msg, context: string) => {\n this.logger.debug(msg, { context })\n },\n verbose: (msg, context: string) => {\n this.logger.trace(msg, { context })\n },\n }\n }\n\n withModule(module: string, useClass: typeof LoggerService = LoggerService) {\n return new useClass(this.logger.fork().setModule(module))\n }\n\n withContext(context: string, useClass: typeof LoggerService = LoggerService) {\n return new useClass(this.logger.fork().setContext(context))\n }\n\n log(msg: string, ...extra: unknown[]) {\n this.logger.info(msg, ...extra)\n }\n\n error(msg: string, ...extra: unknown[]) {\n this.logger.error(msg, ...extra)\n }\n\n warn(msg: string, ...extra: unknown[]) {\n this.logger.warn(msg, ...extra)\n }\n\n debug(msg: string, ...extra: unknown[]) {\n this.logger.debug(msg, ...extra)\n }\n\n verbose(msg: string, ...extra: unknown[]) {\n this.logger.trace(msg, ...extra)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/pino.instance.ts","../src/LoggerClass.ts","../src/nestjs/LoggerService.ts","../src/fastify/FastifyLoggerClass.ts","../src/LoggerFactory.ts"],"sourcesContent":["import pino, { LoggerOptions, LogDescriptor, stdTimeFunctions, type Logger } from \"pino\"\nimport pretty from \"pino-pretty\"\n\nconst loggerOptions = {\n level: \"trace\",\n redact: [\"user.password\", \"options.token\"], // example of a redaction key\n timestamp: stdTimeFunctions.isoTime,\n} satisfies LoggerOptions\n\nconst loggerFactory = (): Logger => {\n if (process.env.NODE_ENV !== \"production\" || parseInt(process.env.LOG_HUMAN ?? \"\") === 1) {\n return pino(\n loggerOptions,\n pretty({\n minimumLevel: (process.env.LOG_LEVEL as pino.Level) ?? \"trace\",\n sync: process.env.NODE_ENV === \"test\",\n colorize: true,\n colorizeObjects: true,\n singleLine: false,\n ignore: \"pid,hostname,app,module,context\",\n customPrettifiers: {\n //pid: (log) => \"{log.pid}\",\n //app: (name) => name,\n },\n messageFormat: (log: LogDescriptor) => {\n const { app, module, context, messageKey = \"msg\" }: LogDescriptor = log\n return `[${[app, module, context].filter(Boolean).join(\"::\")}] ${\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n log[messageKey as keyof LogDescriptor]\n }`\n },\n })\n )\n }\n\n return pino({\n ...loggerOptions,\n level: process.env.LOG_LEVEL ?? \"info\",\n messageKey: \"message\",\n formatters: {\n level: (label) => {\n return { level: label }\n },\n },\n })\n}\n\n/**\n * Main logger instance\n */\nconst mainLogger = loggerFactory()\n\n/**\n * export the main logger instance\n */\nexport const getLogger = () => mainLogger\n","import { getLogger } from \"./pino.instance\"\n\n/**\n * Logger class\n * @param app\n * @param module\n * @param context\n * @constructor\n * @example\n * const logger = new Logger(\"test\")\n * logger.info(\"hello world\")\n * logger.addModule(\"some module\")\n * logger.info(\"hello world\", { user: { id: 1, name: \"John Doe\" } })\n */\nexport class LoggerClass {\n private app = \"\"\n private module = \"\"\n private context = \"\"\n public pino = getLogger()\n constructor(app?: string, module?: string, context?: string) {\n this.app = app ?? \"\"\n this.module = module ?? \"\"\n this.context = context ?? \"\"\n this.updateLogger()\n }\n\n private updateLogger() {\n this.pino = getLogger().child({\n ...(this.app && { app: this.app }),\n ...(this.module && { module: this.module }),\n ...(this.context && { context: this.context }),\n })\n\n return this\n }\n\n fork() {\n return new LoggerClass(this.app, this.module, this.context)\n }\n\n setModule(module: string) {\n this.module = module\n return this.updateLogger()\n }\n\n setContext(context: string) {\n this.context = context\n return this.updateLogger()\n }\n\n trace(message: string, data?: unknown) {\n this.pino.trace(data || null, message)\n }\n\n debug(message: string, data?: unknown) {\n this.pino.debug(data || null, message)\n }\n\n info(message: string, data?: unknown) {\n this.pino.info(data || null, message)\n }\n\n warn(message: string, data?: unknown) {\n this.pino.warn(data || null, message)\n }\n\n error(message: string, data?: unknown) {\n this.pino.error(data || null, message)\n }\n\n fatal(message: string, data?: unknown) {\n this.pino.fatal(data || null, message)\n }\n}\n","import { type LoggerService as NestLoggerService } from \"@nestjs/common\"\nimport { LoggerClass } from \"../LoggerClass\"\n\nexport class NestJSLoggerClass {\n private logger: LoggerClass\n\n constructor(withLogger?: LoggerClass) {\n this.logger = withLogger ?? new LoggerClass()\n this.logger.pino.level = process.env.LOG_LEVEL ?? \"info\"\n }\n\n static forFeature(module: string, useClass: typeof NestJSLoggerClass = NestJSLoggerClass) {\n return {\n provide: useClass,\n useFactory: () => new useClass().withModule(module),\n }\n }\n\n /**\n * This is a workaround to create an interface complying to NestJS's LoggerService for internal logging\n */\n forRoot(): NestLoggerService {\n return {\n log: (msg, context: string, extra) => {\n this.logger.info(msg, { context, extra })\n },\n error: (msg, stack: unknown, context: string) => {\n this.logger.error(String(stack), { context, error: msg })\n },\n warn: (msg, context: string) => {\n this.logger.warn(msg, { context })\n },\n debug: (msg, context: string) => {\n this.logger.debug(msg, { context })\n },\n verbose: (msg, context: string) => {\n this.logger.trace(msg, { context })\n },\n }\n }\n\n withModule(module: string, useClass: typeof NestJSLoggerClass = NestJSLoggerClass) {\n return new useClass(this.logger.fork().setModule(module))\n }\n\n withContext(context: string, useClass: typeof NestJSLoggerClass = NestJSLoggerClass) {\n return new useClass(this.logger.fork().setContext(context))\n }\n\n log(msg: string, ...extra: unknown[]) {\n this.logger.info(msg, ...extra)\n }\n\n error(msg: string, ...extra: unknown[]) {\n this.logger.error(msg, ...extra)\n }\n\n warn(msg: string, ...extra: unknown[]) {\n this.logger.warn(msg, ...extra)\n }\n\n debug(msg: string, ...extra: unknown[]) {\n this.logger.debug(msg, ...extra)\n }\n\n verbose(msg: string, ...extra: unknown[]) {\n this.logger.trace(msg, ...extra)\n }\n}\n\n/**\n * @deprecated Use NestJSLoggerClass instead. This alias will be removed in a future version.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const LoggerService = NestJSLoggerClass\n","import type { FastifyBaseLogger } from \"fastify\"\nimport { LoggerClass } from \"../LoggerClass\"\n\n/**\n * Fastify logger class that implements FastifyBaseLogger interface\n * @example\n * const fastifyLogger = new FastifyLoggerClass(\"MyApp\", \"api\")\n * const app = fastify({ logger: fastifyLogger })\n */\nexport class FastifyLoggerClass implements FastifyBaseLogger {\n private logger: LoggerClass\n public level: string\n\n constructor(app?: string, module?: string, context?: string) {\n this.logger = new LoggerClass(app, module, context)\n this.level = process.env.LOG_LEVEL ?? \"info\"\n }\n\n /**\n * Create a child logger instance\n * @returns New FastifyLoggerClass instance\n */\n child(): FastifyBaseLogger {\n const childLogger = new FastifyLoggerClass()\n childLogger.logger = this.logger.fork()\n childLogger.level = this.level\n return childLogger\n }\n\n /**\n * Helper method to handle log method arguments\n */\n private getLogArgs(msgOrObj: string | object, args: unknown[]): [string, unknown?] {\n if (typeof msgOrObj === \"string\") {\n return [msgOrObj, args.length > 0 ? args[0] : undefined]\n } else {\n const message = typeof args[0] === \"string\" ? args[0] : JSON.stringify(msgOrObj)\n return [message, msgOrObj]\n }\n }\n\n info(message: string | object, ...args: unknown[]): void\n info(obj: object, message?: string, ...args: unknown[]): void\n info(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.info(msg, data)\n }\n\n error(message: string | object, ...args: unknown[]): void\n error(obj: object, message?: string, ...args: unknown[]): void\n error(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.error(msg, data)\n }\n\n debug(message: string | object, ...args: unknown[]): void\n debug(obj: object, message?: string, ...args: unknown[]): void\n debug(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.debug(msg, data)\n }\n\n fatal(message: string | object, ...args: unknown[]): void\n fatal(obj: object, message?: string, ...args: unknown[]): void\n fatal(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.fatal(msg, data)\n }\n\n warn(message: string | object, ...args: unknown[]): void\n warn(obj: object, message?: string, ...args: unknown[]): void\n warn(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.warn(msg, data)\n }\n\n trace(message: string | object, ...args: unknown[]): void\n trace(obj: object, message?: string, ...args: unknown[]): void\n trace(msgOrObj: string | object, ...args: unknown[]): void {\n const [msg, data] = this.getLogArgs(msgOrObj, args)\n this.logger.trace(msg, data)\n }\n\n silent(): void {\n // No-op for silent level\n }\n}\n","import { NestJSLoggerClass } from \"./nestjs/LoggerService\"\nimport { FastifyLoggerClass } from \"./fastify/FastifyLoggerClass\"\n\n/**\n * Factory methods for creating framework-specific logger instances\n */\nexport class LoggerFactory {\n /**\n * Factory method to create a NestJS logger instance\n * @param module Optional module name\n * @returns NestJSLoggerClass instance\n * @example\n * const nestLogger = LoggerFactory.forNestJS(\"MyModule\")\n */\n static forNestJS(module?: string): NestJSLoggerClass {\n const logger = new NestJSLoggerClass()\n return module ? logger.withModule(module) : logger\n }\n\n /**\n * Factory method to create a Fastify logger instance\n * @param app Optional app name\n * @param module Optional module name\n * @returns FastifyLoggerClass instance\n * @example\n * const fastifyLogger = LoggerFactory.forFastify(\"MyApp\", \"api\")\n * const app = fastify({ logger: fastifyLogger })\n */\n static forFastify(app?: string, module?: string): FastifyLoggerClass {\n return new FastifyLoggerClass(app, module)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import { type LoggerService as NestLoggerService } from "@nestjs/common";
|
|
2
2
|
import { LoggerClass } from "../LoggerClass";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class NestJSLoggerClass {
|
|
4
4
|
private logger;
|
|
5
5
|
constructor(withLogger?: LoggerClass);
|
|
6
|
-
static forFeature(module: string, useClass?: typeof
|
|
7
|
-
provide: typeof
|
|
8
|
-
useFactory: () =>
|
|
6
|
+
static forFeature(module: string, useClass?: typeof NestJSLoggerClass): {
|
|
7
|
+
provide: typeof NestJSLoggerClass;
|
|
8
|
+
useFactory: () => NestJSLoggerClass;
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
11
|
* This is a workaround to create an interface complying to NestJS's LoggerService for internal logging
|
|
12
12
|
*/
|
|
13
13
|
forRoot(): NestLoggerService;
|
|
14
|
-
withModule(module: string, useClass?: typeof
|
|
15
|
-
withContext(context: string, useClass?: typeof
|
|
14
|
+
withModule(module: string, useClass?: typeof NestJSLoggerClass): NestJSLoggerClass;
|
|
15
|
+
withContext(context: string, useClass?: typeof NestJSLoggerClass): NestJSLoggerClass;
|
|
16
16
|
log(msg: string, ...extra: unknown[]): void;
|
|
17
17
|
error(msg: string, ...extra: unknown[]): void;
|
|
18
18
|
warn(msg: string, ...extra: unknown[]): void;
|
|
19
19
|
debug(msg: string, ...extra: unknown[]): void;
|
|
20
20
|
verbose(msg: string, ...extra: unknown[]): void;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated Use NestJSLoggerClass instead. This alias will be removed in a future version.
|
|
24
|
+
*/
|
|
25
|
+
export declare const LoggerService: typeof NestJSLoggerClass;
|
|
22
26
|
//# sourceMappingURL=LoggerService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoggerService.d.ts","sourceRoot":"","sources":["../../src/nestjs/LoggerService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,qBAAa,
|
|
1
|
+
{"version":3,"file":"LoggerService.d.ts","sourceRoot":"","sources":["../../src/nestjs/LoggerService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAa;gBAEf,UAAU,CAAC,EAAE,WAAW;IAKpC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAO,iBAAqC;;;;IAOxF;;OAEG;IACH,OAAO,IAAI,iBAAiB;IAoB5B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAO,iBAAqC;IAIjF,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAO,iBAAqC;IAInF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE;IAIpC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE;IAItC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE;IAIrC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE;IAItC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE;CAGzC;AAED;;GAEG;AAEH,eAAO,MAAM,aAAa,0BAAoB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pino.instance.d.ts","sourceRoot":"","sources":["../src/pino.instance.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"pino.instance.d.ts","sourceRoot":"","sources":["../src/pino.instance.ts"],"names":[],"mappings":"AAAA,OAAO,IAAqE,MAAM,MAAM,CAAA;AAoDxF;;GAEG;AACH,eAAO,MAAM,SAAS,mBAAmB,CAAA"}
|
package/README.md
CHANGED
|
@@ -23,6 +23,63 @@ logger.withModule("AnotherModule").info("Hello, world!")
|
|
|
23
23
|
|
|
24
24
|
## NestJS
|
|
25
25
|
|
|
26
|
+
### Using NestJSLoggerClass (recommended)
|
|
27
|
+
|
|
28
|
+
override default logger:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { NestJSLoggerClass, LoggerFactory } from "@we-are-singular/logger"
|
|
32
|
+
|
|
33
|
+
// Using direct instantiation
|
|
34
|
+
const app = await NestFactory.createApplicationContext(AppModule, {
|
|
35
|
+
logger: new NestJSLoggerClass().withModule("AppModule").forRoot(),
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
// Using LoggerFactory
|
|
39
|
+
const app = await NestFactory.createApplicationContext(AppModule, {
|
|
40
|
+
logger: LoggerFactory.forNestJS("AppModule").forRoot(),
|
|
41
|
+
})
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
auto context from module provider:
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
// use forFeature() In other modules
|
|
48
|
+
@Module({
|
|
49
|
+
imports: [],
|
|
50
|
+
controllers: [],
|
|
51
|
+
providers: [
|
|
52
|
+
//
|
|
53
|
+
NestJSLoggerClass.forFeature("Services"),
|
|
54
|
+
],
|
|
55
|
+
exports: [
|
|
56
|
+
//
|
|
57
|
+
NestJSLoggerClass,
|
|
58
|
+
],
|
|
59
|
+
})
|
|
60
|
+
export class ServicesModule {}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
auto context:
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
// as a base class, adding a logger to all classes with a context of the class name
|
|
67
|
+
@Injectable()
|
|
68
|
+
export abstract class BaseClass {
|
|
69
|
+
readonly logger: NestJSLoggerClass
|
|
70
|
+
constructor(
|
|
71
|
+
//
|
|
72
|
+
@Inject(NestJSLoggerClass) logger: NestJSLoggerClass
|
|
73
|
+
) {
|
|
74
|
+
this.logger = logger.withContext(this.constructor.name.toString())
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Using LoggerService (deprecated)
|
|
80
|
+
|
|
81
|
+
> **Note:** `LoggerService` is deprecated and will be removed in a future version. Please use `NestJSLoggerClass` instead.
|
|
82
|
+
|
|
26
83
|
override default logger:
|
|
27
84
|
|
|
28
85
|
```typescript
|
|
@@ -68,3 +125,50 @@ export abstract class BaseClass {
|
|
|
68
125
|
}
|
|
69
126
|
}
|
|
70
127
|
```
|
|
128
|
+
|
|
129
|
+
## Fastify
|
|
130
|
+
|
|
131
|
+
### Using FastifyLoggerClass
|
|
132
|
+
|
|
133
|
+
The FastifyLoggerClass implements the FastifyBaseLogger interface and can be used directly with Fastify:
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
import fastify from "fastify"
|
|
137
|
+
import { FastifyLoggerClass, LoggerFactory } from "@we-are-singular/logger"
|
|
138
|
+
|
|
139
|
+
// Using direct instantiation with app and module
|
|
140
|
+
const app = fastify({
|
|
141
|
+
logger: new FastifyLoggerClass("MyApp", "api"),
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
// Using LoggerFactory
|
|
145
|
+
const app = fastify({
|
|
146
|
+
logger: LoggerFactory.forFastify("MyApp", "api"),
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
// Just module (app will be empty)
|
|
150
|
+
const app = fastify({
|
|
151
|
+
logger: new FastifyLoggerClass(undefined, "api"),
|
|
152
|
+
})
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
This replaces the need for custom logger creation like:
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
// Old way (no longer needed)
|
|
159
|
+
function createFastifyLogger(): FastifyBaseLogger {
|
|
160
|
+
const apiLogger = logger.fork().setModule("api")
|
|
161
|
+
|
|
162
|
+
return {
|
|
163
|
+
level: "info",
|
|
164
|
+
info: apiLogger.info.bind(apiLogger),
|
|
165
|
+
error: apiLogger.error.bind(apiLogger),
|
|
166
|
+
debug: apiLogger.debug.bind(apiLogger),
|
|
167
|
+
fatal: apiLogger.fatal.bind(apiLogger),
|
|
168
|
+
warn: apiLogger.warn.bind(apiLogger),
|
|
169
|
+
trace: apiLogger.trace.bind(apiLogger),
|
|
170
|
+
silent: apiLogger.silent?.bind(apiLogger) || (() => {}),
|
|
171
|
+
child: () => createFastifyLogger(),
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@we-are-singular/logger",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "A simple pinojs wrapper",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": ".build/index.d.ts",
|
|
@@ -31,21 +31,25 @@
|
|
|
31
31
|
"url": "https://github.com/we-are-singular/logger/issues"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@nestjs/common": "^
|
|
35
|
-
"@rollup/plugin-typescript": "^
|
|
36
|
-
"@
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
34
|
+
"@nestjs/common": "^11.1.9",
|
|
35
|
+
"@rollup/plugin-typescript": "^12.3.0",
|
|
36
|
+
"@types/node": "^25.2.3",
|
|
37
|
+
"@we-are-singular/eslint-config": "^2.4.0",
|
|
38
|
+
"fastify": "^5.7.4",
|
|
39
|
+
"prettier": "^3.6.2",
|
|
40
|
+
"release-it": "^19.0.6",
|
|
41
|
+
"rollup": "^4.53.2"
|
|
41
42
|
},
|
|
42
43
|
"dependencies": {
|
|
43
|
-
"pino": "^
|
|
44
|
-
"pino-pretty": "^
|
|
44
|
+
"pino": "^10.1.0",
|
|
45
|
+
"pino-pretty": "^13.1.2"
|
|
45
46
|
},
|
|
46
47
|
"peerDependencies": {
|
|
47
|
-
"pino": "^
|
|
48
|
-
"pino-pretty": "^
|
|
48
|
+
"pino": "^10.1.0",
|
|
49
|
+
"pino-pretty": "^13.1.2"
|
|
50
|
+
},
|
|
51
|
+
"overrides": {
|
|
52
|
+
"glob": ">11.1.0"
|
|
49
53
|
},
|
|
50
54
|
"release-it": {
|
|
51
55
|
"hooks": {
|