Wecode -기업협업 인턴 (부트캠프)/기업협업 독학, 공부

TypeScript 클래스: constructor(private server) {/ 로깅(Logger) **

JBS 12 2023. 11. 1. 21:34

주어진 코드 조각은 TypeScript 클래스의 생성자 메소드로 보입니다. 생성자 메소드는 클래스의 인스턴스를 만들 때 호출되며 일반적으로 클래스의 속성 초기화 및 다른 설정 작업을 수행하는 데 사용됩니다. 생성자 메소드의 구문은 다음과 같습니다:

typescript]

class ClassName {
  constructor(parameters) {
    // 생성자 로직
  }
}

 

 

여기서 "ClassName"은 클래스의 이름이고, "parameters"는 생성자 메소드에 전달되는 매개변수입니다. 생성자 메소드 내에서는 클래스의 속성을 초기화하거나 다른 초기화 작업을 수행할 수 있습니다.

주어진 코드 조각에서 "private server"는 생성자의 매개변수로, 클래스 내에서 해당 이름의 프라이빗 속성으로 사용됩니다. "private" 키워드는 TypeScript의 접근 제어 지시자 중 하나로, 해당 속성은 클래스 외부에서 직접 접근할 수 없으며 클래스 내부에서만 사용할 수 있습니다.

예를 들어:

typescript] 


class MyClass {
  private server;

  constructor(server) {
    this.server = server;
  }

  public doSomething() {
    console.log(`Server: ${this.server}`);
  }
}

const myInstance = new MyClass("example.com");
myInstance.doSomething(); // "Server: example.com"
console.log(myInstance.server); // 에러! 'server' 속성은 private이므로 클래스 외부에서 접근 불가능
이 코드에서 "server" 속성은 클래스 내부에서만 접근 가능하며 클래스 외부에서는 접근할 수 없습니다. 생성자를 통해 값을 설정하고, "doSomething" 메소드를 사용하여 클래스 내에서 속성 값을 출력합니다.




typescript의 start log : 로깅(Logger)

 

TypeScript에서 로깅(Logger)은 프로그램 실행 중에 정보, 경고 및 오류 메시지를 기록하고 디버깅 및 모니터링을 지원하는 중요한 도구입니다. 로깅을 TypeScript 프로젝트에서 구현하는 방법은 다양하며, 주로 다음 방법 중 하나를 선택합니다:

1. console.log 사용:

가장 간단한 로깅 방법은 console.log를 사용하는 것입니다. 이것은 브라우저와 Node.js 모두에서 사용 가능합니다.

 

typescript]
console.log('This is a log message');

 


console.log는 콘솔에 메시지를 출력합니다. 그러나 이 방법은 디버깅용으로만 사용하며, 프로덕션 환경에서는 사용하지 않는 것이 좋습니다.

 


2. 외부 로깅 라이브러리 사용:

프로덕션 환경에서 로깅을 관리하려면 외부 로깅 라이브러리를 사용하는 것이 좋습니다. 일반적으로 사용되는 로깅 라이브러리 중 하나는 winston입니다.

winston 설치:

 

bash/ 
npm install winston

 

typescript/

import winston from 'winston';

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.colorize(),
    winston.format.simple()
  ),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
  ],
});

logger.info('This is an info message');
logger.warn('This is a warning message');
logger.error('This is an error message');

 

winston을 사용하면 로깅 레벨, 출력 형식, 저장 위치 및 다양한 설정을 구성할 수 있습니다.

 


3. Nest.js Logger 사용:

Nest.js 프레임워크를 사용하는 경우 내장된 Logger 모듈을 사용할 수 있습니다. 이 로거는 @nestjs/common 패키지에 포함되어 있으며, 설정이 간편하고 프레임워크에서 일관된 로깅을 지원합니다.

 

 

typescript]


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

@Injectable()
export class MyService {
  private readonly logger = new Logger(MyService.name);

  performAction() {
    this.logger.log('This is a log message');
    this.logger.warn('This is a warning message');
    this.logger.error('This is an error message');
  }
}


Logger 모듈은 클래스 이름을 기반으로 로그 메시지에 대한 메타데이터를 제공합니다.

각각의 로깅 방법은 프로젝트의 요구 사항과 환경에 따라 선택할 수 있으며, 적절한 로깅 수준, 포맷, 대상 및 설정을 구성할 수 있어야 합니다.