import { Logger, LoggerService } from '@nestjs/common';

export class CustomLogger extends Logger implements LoggerService {

  constructor(name: string) {
    super(name);
    (Logger as any).logLevels = process.env.ENV == 'test'
      ? []
      : CustomLogger.inDevelopMode()
        ? ['debug', 'error', 'log', 'verbose', 'warn']
        : ['error', 'warn', 'log'];
  }

  private static inDevelopMode(): boolean {
    return process.env.ENV == 'development' || process.env.ENV === 'develop';
  }

  public debugDto(message: string, dto: Record<string, any>): void {
    if (CustomLogger.inDevelopMode()) {
      super.debug(`${message} ${JSON.stringify(dto, null, 2)}`);
    }
  }
}
