9. Logging
1. 로깅
필요한 곳에 로그를 남겨보자.
import { Logger } from "@nestjs/common";
import { NestFactory } from "@nestjs/core";
import { AppModule } from "./app.module";
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const port = 3000;
await app.listen(port);
Logger.log(`Application running on port ${port}`);
}
bootstrap();
import {
Body,
Controller,
Delete,
Get,
Logger,
Param,
ParseIntPipe,
Patch,
Post,
UseGuards,
UsePipes,
ValidationPipe,
} from "@nestjs/common";
import { AuthGuard } from "@nestjs/passport";
import { GetUser } from "src/auth/get-user.decorator";
import { User } from "src/auth/user.entity";
import { BoardStatus } from "./board-status.enum";
import { Board } from "./board.entity";
import { BoardsService } from "./boards.service";
import { CreateBoardDto } from "./dto/create-board.dto";
import { BoardStatusValidationPipe } from "./pipes/board-status-validation.pipe";
@Controller("boards")
@UseGuards(AuthGuard())
export class BoardsController {
private logger = new Logger("BoardsController");
constructor(private boardsService: BoardsService) {}
@Get("/")
getAllBoards(@GetUser() user: User): Promise<Board[]> {
this.logger.verbose(`User ${user.username} trying to get all boards`);
return this.boardsService.getAllBoards(user);
}
@Post("/")
@UsePipes(ValidationPipe)
createBoard(
@Body() createBoardDto: CreateBoardDto,
@GetUser() user: User
): Promise<Board> {
this.logger.verbose(`User ${user.username} creating a new board.
Payload: ${JSON.stringify(createBoardDto)}`);
return this.boardsService.createBoard(createBoardDto, user);
}
@Get("/:id")
getBoardById(@Param("id", ParseIntPipe) id: number): Promise<Board> {
return this.boardsService.getBoardById(id);
}
@Delete("/:id")
deleteBoard(
@Param("id", ParseIntPipe) id: number,
@GetUser() user: User
): Promise<void> {
return this.boardsService.deleteBoard(id, user);
}
@Patch("/:id/status")
updateBoardStatus(
@Param("id", ParseIntPipe) id: number,
@Body("status", BoardStatusValidationPipe) status: BoardStatus
): Promise<Board> {
return this.boardsService.updateBoardStatus(id, status);
}
}