运行 Nestjs 并到达任何端点时看不到 console.log() 或记录器消息

apu*_*pun 7 node.js nestjs

当我尝试到达任何端点时,我在 IDE 控制台中看不到任何状态或控制台消息。我确实看到返回了响应,但控制台中没有呼叫详细信息。我很困惑为什么它会这样?

以下是我跑步时看到的情况npm run-script start:dev——

> nest start --watch
[3:04:44 PM] Starting compilation in watch mode...


[Nest] 14340   - 05/20/2020, 3:10:58 PM   [NestFactory] Starting Nest application...
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [InstanceLoader] TypeOrmModule dependencies initialized +220ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [InstanceLoader] TypeOrmCoreModule dependencies initialized +195ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [InstanceLoader] TypeOrmModule dependencies initialized +6ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [InstanceLoader] AppModule dependencies initialized +5ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RoutesResolver] AppController {}: +13ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RouterExplorer] Mapped {, GET} route +4ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RoutesResolver] BatchController {/batch}: +1ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RouterExplorer] Mapped {/batch, POST} route +1ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RouterExplorer] Mapped {/batch, GET} route +1ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RouterExplorer] Mapped {/batch/:batch, GET} route +1ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RouterExplorer] Mapped {/batch/:batch, DELETE} route +1ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RoutesResolver] StudentController {/student}: +0ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RouterExplorer] Mapped {/student, POST} route +2ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RouterExplorer] Mapped {/student, GET} route +1ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RouterExplorer] Mapped {/student/:id, GET} route +1ms
[Nest] 14340   - 05/20/2020, 3:10:58 PM   [RouterExplorer] Mapped {/student/:id, DELETE} route +2ms
[Nest] 14340   - 05/20/2020, 3:10:59 PM   [RoutesResolver] AssignmentController {/assignment}: +1ms
[Nest] 14340   - 05/20/2020, 3:10:59 PM   [RouterExplorer] Mapped {/assignment, POST} route +1ms
[Nest] 14340   - 05/20/2020, 3:10:59 PM   [RouterExplorer] Mapped {/assignment, GET} route +1ms
[Nest] 14340   - 05/20/2020, 3:10:59 PM   [RouterExplorer] Mapped {/assignment/:id, GET} route +2ms
[Nest] 14340   - 05/20/2020, 3:10:59 PM   [RouterExplorer] Mapped {/assignment/:id, DELETE} route +1ms
[Nest] 14340   - 05/20/2020, 3:10:59 PM   [RoutesResolver] UploadController {/upload}: +1ms
[Nest] 14340   - 05/20/2020, 3:10:59 PM   [RouterExplorer] Mapped {/upload, POST} route +2ms
[Nest] 14340   - 05/20/2020, 3:10:59 PM   [NestApplication] Nest application successfully started +3ms
Run Code Online (Sandbox Code Playgroud)

当我点击 时http://localhost:3000/batch,我看到了响应,但上面的控制台没有显示API类型GET或状态200等任何内容。

这就是我在控制器中的内容 -

import {
  Controller,
  Get,
  Post,
  Body,
  Param,
  Delete,
  Logger,
} from '@nestjs/common';
import { BatchService } from './batch.service';
import { Batch } from './batch.entity';
import { InsertResult } from 'typeorm';

@Controller('batch')
export class BatchController {
  private readonly logger = new Logger(BatchController.name);

  constructor(private batchService: BatchService) {}
  @Post()
  create(@Body() batchDto: Batch): Promise<InsertResult> {
    this.logger.log(':: BatchController :: create()');
    console.log(':: BatchController :: create()');
    return this.batchService.create(batchDto);
  }

  @Get()
  findAll(): Promise<Batch[]> {
    this.logger.log(':: BatchController :: findAll()');
    console.log(':: BatchController :: findAll()');
    return this.batchService.findAll();
  }

  @Get(':batch')
  findOne(@Param('batch') batchName): Promise<Batch> {
    this.logger.log(':: BatchController :: findOne()');
    console.log(':: BatchController :: findOne()');
    return this.batchService.findOne(batchName);
  }

  @Delete(':batch')
  remove(@Param('batch') batchName) {
    this.logger.log(':: BatchController :: remove()');
    console.log(':: BatchController :: remove()');
    return this.batchService.remove(batchName);
  }
}
Run Code Online (Sandbox Code Playgroud)

consolelogger两者都设置为看看是否有任何效果。

小智 5

您似乎已禁用 NestJS 应用程序的日志。启用 NestJS 请求日志记录的最佳且简单的方法是使用其内置记录器服务。为此,您可以在引导 NestJS 应用程序时传递 LogLevel 数组。

在您的main.ts手术室中,无论您在何处引导 Nest 应用程序,

const app = await NestFactory.create<NestExpressApplication>(AppModule, new ExpressAdapter(), {
    cors: true,
    logger: ['error', 'warn', 'log'] // <--- Add this line in options object
});
Run Code Online (Sandbox Code Playgroud)

LogLevels在这里,传递一个in数组options.logger

截至目前,LogLevel 类型具有以下适用值:

declare type LogLevel = 'log' | 'error' | 'warn' | 'debug' | 'verbose';
Run Code Online (Sandbox Code Playgroud)

(代码片段取自@nestjs/common

现在再次运行该项目,它应该在控制台中打印请求日志。