Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 빌드자동화도구
- 정보처리기사
- 프로그래머스
- aws
- 롬복사용시주의할점
- 어노테이션
- 자바
- 정처기필기
- 무중단배포
- 시계열디비
- 생성자
- Docker
- 롬복
- 알고리즘
- API
- git
- spring
- 정보처리기사필기
- 정처기공부
- Java8
- 정처기
- 롬북
- 서버
- CICD
- java
- Groovy문법
- 빌드스크립트
- controller
- 완전탐색알고리즘
- PULL방식아키텍쳐
Archives
- Today
- Total
우당탕탕 개발일지
[Logging] 로깅라이브러리 - Logback이란? 본문
로깅(logging)이란?
- 애플리케이션이 동작하는 동안 시스템의 상태나 동작 정보를 시간순으로 기록하는 것
- 비기능 요구사항 → 사용자나 고객에게는 불필요한 기능
- 디버깅하거나 개발 이후 발생한 문제를 해결할 때 원인을 분석하는 요소
로깅라이브러리 - Logback
- log4j 이후 출시 된 로깅 프레임워크 중 하나로 slf4j를 기반으로 구현(slf4j를 구현체로 사용)
- 스프링 부트의 spring-boot-starter-web 라이브러리 내부에 내장돼 있어 별도 의존성을 추가하지 않아도 사용가능
- 크게 5개의 로그 레벨을 설정할 수 있음(가장 많이 사용 되는 것은 INFO)
- 로그 레벨을 남기는 이유? 기록이 너무 많이 남으면 보기 힘듦
- ERROR : 로직 수행 중에 시스템에 심각한 문제가 발생해서 애플리케이션의 작동이 불가능한 경우
- WARN : 시스템 에러의 원인이 될 수 있는 경고 레벨
- INFO : 애플리케이션의 상태 변경과 같은 정보 전달을 위해 사용
- DEBUG : 애플리케이션의 디버깅을 위한 메시지를 표시
- TRACE : DEBUG 레벨보다 더 상세한 메시지를 표현
- 로그 레벨을 남기는 이유? 기록이 너무 많이 남으면 보기 힘듦
- 실제 운영 환경과 개발 환경에서 각각 다른 출력 레벨을 설정해서 로그를 확인할 수 있음
- Logback의 설정 파일을 일정 시간마다 스캔해서 애플리케이션을 재가동하지 않아도 설정을 변경할 수 있음
- 별도의 프로그램 지원 없이도 자체적으로 로그 파일을 압축할 수 있음
- 저장된 로그 파일에 대한 보관 기간 등을 설정해서 관리할 수 있음
Logback 설정
▶ Spring, 일반 JAVA 프로그램일 경우
- logback.xml 파일을 resources 디렉토리에 만들어 참조
▶ Springboot의 경우
- logback-spring.xml 파일을 resources 디렉토리에 만들어 참조
- 간단히 application.properties에 값만 세팅해도 설정 가능
logging.level.root=debug // 기본값은 INFO
logging.level.com.springboot.hello.controller=debug // 패키지 별로도 설정 가능
// application.yml 일 경우
logging:
level:
root: debug
→ 단, 로그를 너무 많이 남기면 용량이 금방 차버리기 때문에 Rolling을 함
limit을 정해놓고 오래 된 로그부터 지우는 것
로그 기록 남기는 방법
- Controller의 클래스 명 위에 @Slf4j 어노테이션을 달아줌
- 각 Mapping 안에 log.info(”원하는 로그 내용”); 입력
- url에 값을 받아오는 GetMapping 인 경우
log.info(”원하는 로그 내용. varialbe:{}”, varialbe); 로 입력 가능
- url에 값을 받아오는 GetMapping 인 경우
- @Data : 가져오려는 클래스 위에 해당 어노테이션을 사용하여 객체주소가 아닌 값을 확인할 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
@RestController
@RequestMapping("/api/v1/get-api")
@Slf4j // 로그 어노테이션 사용
public class GetController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello(){
log.info("hello로 요청이 들어왔습니다."); // 남길 내용 입력
return "Hello World";
}
@GetMapping(value = "/name")
public String getName() {
log.info("getName으로 요청이 들어왔습니다.");
return "minkyoung";
}
@GetMapping(value = "/variable1/{variable}")
public String getVariable1(@PathVariable String variable) {
log.info("getVariable1으로 요청이 들어왔습니다. variable:{}", variable);
return variable;
}
|
cs |
'개발' 카테고리의 다른 글
[Lombok] @AllArgsConstructor / @NoArgsConstructor (0) | 2023.04.27 |
---|---|
Gradle(그래이들) 개념 및 특징 (0) | 2023.03.29 |
좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2022.12.15 |
[Lombok] RequiredArgsConstructor 어노테이션이란? (0) | 2022.12.06 |
[Lombok] RequiredArgsConstructor 어노테이션이란? (0) | 2022.11.28 |