
✅ Logger 모듈 추가
📝./src/main.ts
import { Logger } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const logger = new Logger();
const port = 3000;
const app = await NestFactory.create(AppModule);
await app.listen(port);
logger.log(`Application running on port ${port}`);
}
bootstrap();
expressjs 에서는 Winston 모듈을 주로 사용한다고 한다
nestjs 에서는 내장 Logger 클래스가 존재한다

Log
Warning
Error
Debug
Verbose
이렇게 다섯 가지 레벨로 사용 가능하다
프로덕션 단계에서는 Log 와 Error 만 사용 가능
📝./src/boards/boards.controller.ts
export class BoardsController {
private logger = new Logger('BoardsController');
...
@Get()
getAllBoard(@GetUser() user: User): Promise<Board[]> {
this.logger.verbose(`User ${user.username} trying to get all boards`);
return this.boardsService.getAllBoards(user);
}
}

Logger 생성자 인자로 string 전달해주면 그게 로그 찍을 때 정보로 나온다
📝./src/boards/boards.controller.ts
@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);
}

✅ 설정 (Configuration)
npm i config --save
config 모듈을 추가한다
📝./config/default.yml
server:
port: 3000
db:
type: 'postgres'
port: 5432
database: 'board-app'
jwt:
expiresIn: 3600
📝./config/development.yml
db:
host: 'localhost'
username: 'postgres'
password: 'postgres'
synchronize: true
jwt:
secret: 'MySecretKey1234'
📝./config/development.yml
db:
synchronize: false
예제에서는 야믈 파일로 생성해준다 json 형식도 가능하다
expressjs 할 때는 dotenv 를 썼었던 거 같은데 yml 파일 쓰는 건 첨이다
📝./src/main.ts
import { Logger } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as config from 'config';
async function bootstrap() {
const logger = new Logger();
const app = await NestFactory.create(AppModule);
const serverConfig = config.get('server');
const port = serverConfig.port;
await app.listen(port);
logger.log(`Application running on port ${port}`);
}
bootstrap();
config를 import 해서 사용 가능하다
📝./src/configs/typeorm.config.ts
import { TypeOrmModuleOptions } from '@nestjs/typeorm';
import * as config from 'config';
const dbConfig = config.get('db');
export const typeORMConfig: TypeOrmModuleOptions = {
type: dbConfig.type,
host: process.env.RDS_HOSTNAME || dbConfig.host,
port: process.env.RDS_PORT || dbConfig.port,
username: process.env.RDS_USERNAME || dbConfig.username,
password: process.env.RDS_PASSWORD || dbConfig.password,
database: process.env.RDS_DB_NAME || dbConfig.database,
entities: [__dirname + '/../**/*.entity.{js,ts}'],
synchronize: dbConfig.synchronize,
};
AWS 같은 클라우드에선 환경 변수 설정이 가능하기 때문에
process.env 에서 가져오거나 yml 파일에서 가져오도록 || 사용
일주일 정도 들어서 완강했다
이제 nestjs 활용한 프로젝트 곧 시작하니까 나머지도 잘 공부해야겠다
'📡 백엔드 > 🐱 Nest.js' 카테고리의 다른 글
[NestJs] 따라하면서 배우는 NestJs - 8 (권한 부여, 유저와 게시글 관계 부여) (0) | 2022.07.09 |
---|---|
[NestJs] 따라하면서 배우는 NestJs - 7 (JWT, passport 이용한 인증 구현) (0) | 2022.07.08 |
[NestJs] 따라하면서 배우는 NestJs - 6 (auth 모듈 구현) (0) | 2022.07.07 |
[NestJs] 따라하면서 배우는 NestJs - 5 (레포지토리 구현 및 DB 이용 CRUD) (0) | 2022.07.07 |
[NestJs] TypeORM 사용 시 RepositoryNotFoundError 해결하기 (0) | 2022.07.06 |