[영상후기][10분 테코톡] 아마란스의 로깅

박철현·2024년 2월 20일
0

영상후기

목록 보기
146/160

movie

로깅 : 로그를 기록하도록 시스템을 구성하는 작업

  • 로그 : 시스템이 동작할 때 시간 경과에 따라 기록된 시스템의 상태&동작 정보
  • 목적
    • 시스템의 오류 추적
    • 정보 수집
      • 시스템의 성능 측정을 위한 통계 자료 수집
      • 실제 서비스 이용률 분석을 위한 로그 수집
  • println : 로깅의 일종
    • 동기적 실행으로 인한 성능 저하 유발
    • 관리의 번거로움
    • 정보 제공의 편의성 떨어짐
  • 로깅 라이브러리(logback) 이용

Logback 구성 요소

  • Appender : 로그 메세지가 출력될 대상 결정

    • ConsoleAppender : 콘솔에 출력
    • FileAppender : 파일에 출력
    • SMTPAppender : 메일로 출력(전송)
    • DBAppender : DB에 출력(저장)
  • Encoder : 로그 메세지를 사용자가 정의한 포맷으로 변환

    • Encoder에 정의된 패턴에 맞게 변환됨
    • Appender 내부 포함됨
  • Logger : 실제 로깅 수행, 패키지별 로거 설정 가능

    • 여러개의 appender를 하나의 logger에 참조하게 할 수 있음

    • member 패키지용 로거, comment 패키지용 로거

    • 로그 레벨 설정 가능(로그 메세지가 나타내는 중요도)

      • TRACE : DEBUG 보다 훨씬 상세 정보 표시
      • DEBUG : 프로그램을 디버깅 하기 위한 정보 표시
      • INFO : 상태 변경과 같은 정보성 로그 표시
      • WARN : 처리 가능한 문제, 향후 시스템 에러 원인이 될 수 있는 경고성 메세지 표시
      • ERROR : 요청 처리 중 오류가 발생한 경우 표시
        중요도 : TRACE < DEBUG < INFO < WARN < ERROR
    • 로그 레벨을 설정할 경우 특정 레벨 이상의 로그만 출력됨

      • ex) level = INFO => INFO, WARN, ERROR만 출력
  • Filter : 출력할 로그 이벤트 필터링

    • Appender 내부 포함, 필수 구성요소는 아님
    • Level Filter를 사용하여 해당 레벨 로그만 출력 가능
      • ex) ACCEPT Debug => Debug 요소만 출력

    로그 출력하기

  • Spring Boot는 기본적으로 Logback 사용하도록 설계

  • 사용자 생성 로그를 직접 출력 가능

    • Logger 객체 정의
    • logger 객체가 가지고 있는 메서드 호출
@RestController
@RequiredArgsConstructor
public class WebController {
	private final WebService racingService;
    
@GetMapping
public void log() {
	// 1. 로거 객체 정의
	Logger logger = LoggerFactory.getLogger(WebController.class);
    // 2. 메서드 호출
    logger.info("info 로깅이야!!!");
}
  • @Slf4j 어노테이션 사용 시 Logger 정의를 자동으로 해줌
@Slf4j
@RestController
@RequiredArgsConstructor
public class WebController {
	private final WebService racingService;
    
@GetMapping
public void log() {
    // 로거 정의를 자동으로 해주기 때문에 메소드만 호출하면 됨
    log.trace("trace 로깅이야!!!");
    log.debug("debug 로깅이야!!!");
    log.info("info 로깅이야!!!");
}
  • 스프링 부트 기본 로그 레벨 설정 INFO

    • 별도 설정하지 않는 이상 기본적으로 trace, debug 레벨은 출력 안됨
    • 위 예시에서 info 로깅만 출력
  • 로그레벨 설정, Appender 및 Filter 적용 위해서는 logback-spring.xml 설정 파일 작성 필요


설정 파일 작성하기

  • xml 설정으로 특정 패키지, 특정 시간별 등 설정

부록 1

  • 커스텀 Appender, Filter(interface를 구현해서 만들 수 있음)
    • 예시
      • 특정 단어가 포함된 로그만을 필터링하는 Filter
      • 로그 이벤트 발생 시 슬랙 웹 훅으로 메시지를 전송하는 Appender

부록 2

  • Profile마다 로깅 전략을 다르게 설정할 수 있음

  • yml 파일에서 로그레벨 설정 가능
  • 복잡한 세부 설정은 xml 파일 필요
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보