JSCODE Logo
블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[실습] 맛집 웨이팅 API를 통한 로그실습

JSCODE 시니
JSCODE 시니
2026. 03. 03.
author
JSCODE 시니
category
Logging Monitoring
createdAt
Mar 5, 2026 06:42 PM
isPublic
isPublic
series
로그관리와 모니터링 - ELK 프로메테우스 그라파나편
slug
practice-logging-with-waiting-api
type
post
updatedAt
Mar 3, 2026 09:00

✅ 1. 실습 준비

  • 실습 파일은 강의자료 섹션에 첨부파일을 활용할 것
  • build.gradle 파일 오픈하여 실습 진행
  • 각 IDE 환경에 맞는 롬복을 설치할 것
 
 

✅ 2. 로그 작성을 위한 어노테이션 추가

package com.hi.waiting_api; @RestController @RequestMapping("/api/waiting") @RequiredArgsConstructor @Slf4j public class WaitingController { private final WaitingService waitingService; @PostMapping public String register(@RequestBody WaitingRequest request) { try { return waitingService.registerWaiting(request.getName(), request.getPhone()); } catch (IllegalArgumentException e) { return "웨이팅 등록에 실패했습니다: " + e.getMessage(); } } }
 
 

✅ 3. Slf4j란?

  • Simple Logging Facade for Java
  • Facade == 껍데기 == 인터페이스
  • 간단하게 로그를 찍을 수 있는 인터페이스
import org.slf4j.Logger; import org.slf4j.LoggerFactory; // 현재의 방식 @Slf4j public class WaitingController { // 과거의 방식 private static final Logger log = LoggerFactory.getLogger(WaitingController.class); // ... }
  • Slf4j 인터페이스를 통해 LogBack과 같은 구현체를 이용해 로그를 남기는 것!
 
 
 

✅ 4. 에러 로그 작성

WaitingController.java
package com.hi.waiting_api; @RestController @RequestMapping("/api/waiting") @RequiredArgsConstructor @Slf4j public class WaitingController { private final WaitingService waitingService; @PostMapping public String register(@RequestBody WaitingRequest request) { try { return waitingService.registerWaiting(request.getName(), request.getPhone()); } catch (IllegalArgumentException e) { log.error("[api 오류] 웨이팅 등록 중 문제 발생 : {}", e.getMessage()) ; return "웨이팅 등록에 실패했습니다: " + e.getMessage(); } } }
  • 에러 로그는 템플릿 리터럴 문법으로 작성 가능하다.
  • 마치 printf를 사용하는 것처럼 쓰면 됨.
  • 로그를 통해 남긴 것들은 콘솔, 파일(수동 설정)에 남게 된다.
 
 

✅ 5. 에러 로그 확인

notion image
  • Postman 테스트
  • URL : localhost:8080/api/waiting
  • Body :
{ "name":"김시연", "phone": "010-1111-2222" }
 
notion image
같은 URL로 요청 시 이미 대기 등록된 연락처이므로, 웨이팅 등록에 실패
notion image
에러 로그가 잘 뜨는지 확인할 것
 
 

✅ 6. 인포 로그 작성

WaitingService.java
package com.hi.waiting_api; @Service @Slf4j public class WaitingService { private int currentWaitingCount = 0; // 현재 대기 번호 private final Set<String> registeredPhones = new HashSet<>(); // 중복 등록 방지용 셋 public String registerWaiting(String name, String phone) { String maskedPhone = maskPhoneNumber(phone); log.info("[웨이팅 요청] 이름 : {}, 연락처 : {}", name, maskedPhone); if (registeredPhones.contains(phone)) { throw new IllegalArgumentException("이미 대기 등록된 연락처입니다."); } if (currentWaitingCount >= 45) { } registeredPhones.add(phone); currentWaitingCount++; return name + "님, 대기번호 " + currentWaitingCount + "번이 발급되었습니다."; } // 전화번호 마스킹 메서드 (예: 010-1234-5678 -> 010-****-5678) private String maskPhoneNumber(String phone) { if (phone == null || phone.length() < 13) return "****"; return phone.substring(0, 4) + "****" + phone.substring(8); } }
notion image
 
 

✅ 7. 인포 로그 확인

notion image
 
author
category
Logging Monitoring
createdAt
Mar 6, 2026 08:35 AM
isPublic
isPublic
series
로그관리와 모니터링 - ELK 프로메테우스 그라파나편
slug
type
series-footer
updatedAt
Mar 3, 2026 09:00
📎
이 글은 로그관리와 모니터링 - ELK, 프로메테우스, 그라파나 강의의 수업 자료 중 일부입니다.