gengminy
갱미니의 코딩일지
gengminy
전체 방문자
오늘
어제
  • 분류 전체보기 (61)
    • 🚀 프로젝트 (16)
      • 🎸 고스락 티켓 (4)
      • 🌞 내친소 (5)
      • 🥁 두둥 (7)
    • 📡 백엔드 (31)
      • 🌱 Spring Boot (13)
      • 🐱 Nest.js (10)
      • ⭐ Node.js (8)
    • 🏭 Infra (11)
      • ⚙ 준비를 위한 준비 (2)
      • 🥑 AWS (3)
      • 🐳 Docker (3)
      • ⚡ Github Actions (3)
    • 🌊 프론트엔드 (1)
      • 🌌 React.js (1)
    • 😎 주저리 (2)

블로그 메뉴

  • 💻Github
  • 📸Instagram
  • ✨Blog

공지사항

인기 글

태그

  • GithubActions
  • 스프링부트
  • JSON
  • AWS
  • 스프링
  • 도커
  • springboot
  • nodejs
  • github
  • nest
  • SlackAPI
  • oauth2
  • Spring
  • JWT
  • 네스트
  • docker
  • OAuth
  • 슬랙알림
  • nestjs
  • 깃헙액션

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
gengminy
📡 백엔드/🐱 Nest.js

[NestJs] 따라하면서 배우는 NestJs - 9 (로그, 설정)

[NestJs] 따라하면서 배우는 NestJs - 9 (로그, 설정)
📡 백엔드/🐱 Nest.js

[NestJs] 따라하면서 배우는 NestJs - 9 (로그, 설정)

2022. 7. 9. 14:19

✅ 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
    '📡 백엔드/🐱 Nest.js' 카테고리의 다른 글
    • [NestJs] 따라하면서 배우는 NestJs - 8 (권한 부여, 유저와 게시글 관계 부여)
    • [NestJs] 따라하면서 배우는 NestJs - 7 (JWT, passport 이용한 인증 구현)
    • [NestJs] 따라하면서 배우는 NestJs - 6 (auth 모듈 구현)
    • [NestJs] 따라하면서 배우는 NestJs - 5 (레포지토리 구현 및 DB 이용 CRUD)
    gengminy
    gengminy
    코딩

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.