728x90
로그란?
로그는 프로그램이 어떤 동작을 했는지 기록해두는 것
에러가 났을 때 원인을 추적하거나, 정상적으로 동작했는지 확인하는 데 꼭 필요하다.
리눅스 시스템에서는 다음과 같은 명령어로 로그를 확인할 수 있다.
systemctl status nginx # 서비스 상태 확인
cat /var/log/syslog # 시스템 로그 확인


Spring에서의 Logging
스프링에서는 Logger를 사용해서 다양한 로그 레벨로 메시지를 기록할 수 있다.
log.info("정상"); // 정상일 때
log.error("에러"); // 에러일 때
// 동작 상황을 모두 출력
log.trace("trace : 동작 상황을 모두 출력(메소드 실행, 종료, 반복문 실행 등)");
// 동작 상황을 모두 출력
log.debug("debug : 동작 상황을 모두 출력(로직, 변수 값 등)");
// 잘못이 될 수도 있고 아닐 수도 있는 것
log.warn("warn : 잘못이 될 수도 있고 아닐 수도 있는 것");

간단한 예시
@GetMapping("/test")
public ResponseEntity<String> test() {
log.info("정상 동작");
log.error("에러 발생");
String response = "서비스 호출 결과";
long start = System.currentTimeMillis();
log.info("SUCCESS:[GET][200][{}][{}ms]", response, System.currentTimeMillis() - start);
return ResponseEntity.ok("test");
}

로그를 어디에, 어떻게 찍을까?
처음에는 각 메소드마다 직접 로그를 작성할 수 있다. 하지만 프로젝트가 커질수록 문제가 생긴다.
=> 모든 메소드에 직접 로그를 넣으면, 양식이 바뀔 때마다 전부 수정해야 한다.
✅ 해결 방법
객체지향적으로 처리하자!
- 공통 로직(로그 출력)을 분리해서 AOP(Aspect-Oriented Programming) 등으로 처리하면 유지보수가 쉬워진다.
- 예를 들어, 모든 컨트롤러의 메소드 실행 전후에 자동으로 로그를 남기게 할 수 있다.
728x90
'BE > Spring Boot' 카테고리의 다른 글
[Spring Boot] Logback이란? / 로그 서버 구성, 연동 (0) | 2025.04.12 |
---|---|
[Spring Boot] AOP란? / AOP 간단 구현 (로깅) (0) | 2025.04.12 |
[Spring Boot] CQRS (0) | 2025.03.29 |
[Spring Boot] Gateway에서 인가 처리 (Filter) (0) | 2025.03.21 |
[Spring Boot] Eureka란? / 스프링 부트에서 Eureka, Gateway 설정 (0) | 2025.03.19 |
728x90
로그란?
로그는 프로그램이 어떤 동작을 했는지 기록해두는 것
에러가 났을 때 원인을 추적하거나, 정상적으로 동작했는지 확인하는 데 꼭 필요하다.
리눅스 시스템에서는 다음과 같은 명령어로 로그를 확인할 수 있다.
systemctl status nginx # 서비스 상태 확인 cat /var/log/syslog # 시스템 로그 확인


Spring에서의 Logging
스프링에서는 Logger를 사용해서 다양한 로그 레벨로 메시지를 기록할 수 있다.
log.info("정상"); // 정상일 때 log.error("에러"); // 에러일 때 // 동작 상황을 모두 출력 log.trace("trace : 동작 상황을 모두 출력(메소드 실행, 종료, 반복문 실행 등)"); // 동작 상황을 모두 출력 log.debug("debug : 동작 상황을 모두 출력(로직, 변수 값 등)"); // 잘못이 될 수도 있고 아닐 수도 있는 것 log.warn("warn : 잘못이 될 수도 있고 아닐 수도 있는 것");

간단한 예시
@GetMapping("/test") public ResponseEntity<String> test() { log.info("정상 동작"); log.error("에러 발생"); String response = "서비스 호출 결과"; long start = System.currentTimeMillis(); log.info("SUCCESS:[GET][200][{}][{}ms]", response, System.currentTimeMillis() - start); return ResponseEntity.ok("test"); }

로그를 어디에, 어떻게 찍을까?
처음에는 각 메소드마다 직접 로그를 작성할 수 있다. 하지만 프로젝트가 커질수록 문제가 생긴다.
=> 모든 메소드에 직접 로그를 넣으면, 양식이 바뀔 때마다 전부 수정해야 한다.
✅ 해결 방법
객체지향적으로 처리하자!
- 공통 로직(로그 출력)을 분리해서 AOP(Aspect-Oriented Programming) 등으로 처리하면 유지보수가 쉬워진다.
- 예를 들어, 모든 컨트롤러의 메소드 실행 전후에 자동으로 로그를 남기게 할 수 있다.
728x90
'BE > Spring Boot' 카테고리의 다른 글
[Spring Boot] Logback이란? / 로그 서버 구성, 연동 (0) | 2025.04.12 |
---|---|
[Spring Boot] AOP란? / AOP 간단 구현 (로깅) (0) | 2025.04.12 |
[Spring Boot] CQRS (0) | 2025.03.29 |
[Spring Boot] Gateway에서 인가 처리 (Filter) (0) | 2025.03.21 |
[Spring Boot] Eureka란? / 스프링 부트에서 Eureka, Gateway 설정 (0) | 2025.03.19 |