import {
LoggerService as ILoggerService,
Injectable,
LogLevel,
} from "@nestjs/common";
@Injectable()
export class LoggerService implements ILoggerService {
private levels: LogLevel[] = [];
log(message: any, ...optionalParams: any[]) {
this._log("log", message, ...optionalParams);
}
error(message: any, ...optionalParams: any[]) {
this._log("error", message, ...optionalParams);
}
warn(message: any, ...optionalParams: any[]) {
this._log("warn", message, ...optionalParams);
}
debug?(message: any, ...optionalParams: any[]) {
this._log("debug", message, ...optionalParams);
}
verbose?(message: any, ...optionalParams: any[]) {
this._log("verbose", message, ...optionalParams);
}
fatal?(message: any, ...optionalParams: any[]) {
this._log("fatal", message, ...optionalParams);
}
setLogLevels?(levels: LogLevel[]) {
this.levels = levels;
}
private _log(level: LogLevel, message: any, ...optionalParams: any[]) {
if (!this.levels.includes(level)) {
return;
}
if (level === "log") {
console.log(message, ...optionalParams);
} else if (level === "error") {
console.error(message, ...optionalParams);
} else if (level === "warn") {
console.warn(message, ...optionalParams);
} else if (level === "debug") {
console.debug(message, ...optionalParams);
} else if (level === "verbose") {
console.log(message, ...optionalParams);
} else if (level === "fatal") {
console.error(message, ...optionalParams);
}
}
}