@dugongjs/nestjs
Version:
36 lines (35 loc) • 1.23 kB
JavaScript
import { Logger } from "@nestjs/common";
/**
* Adapts the NestJS Logger to the ILogger interface used by the core package.
* The first argument is treated as structured context and rendered as a single-line message.
*/
export class NestJSLoggerAdapter {
constructor(context) {
this.logger = new Logger(context);
}
log(context, ...args) {
this.logMessage("log", context, args);
}
error(context, ...args) {
this.logMessage("error", context, args);
}
warn(context, ...args) {
this.logMessage("warn", context, args);
}
verbose(context, ...args) {
this.logMessage("debug", context, args);
}
logMessage(level, context, args) {
// If context is a plain object, format it as single-line JSON
if (context && typeof context === "object" && !Array.isArray(context)) {
const contextStr = JSON.stringify(context);
const message = args.length > 0 ? `${contextStr} ${args.join(" ")}` : contextStr;
this.logger[level](message);
}
else {
// Otherwise just log as-is
const message = [context, ...args].join(" ");
this.logger[level](message);
}
}
}