반응형
※ 실무에서는 System.out.print*를 거의 사용하지 않는다. 로깅 라이브러리를 사용해서 로그를 출력한다.
- SLF4J https://www.slf4j.org/
- 인터페이스.
- 구현체로 Logback, Log4J, Log4J2 등을 제공한다.
- 인터페이스.
- Logback https://logback.qos.ch/
- 스프링 부트에서 기본으로 제공.
- 따라서 대부분 로그백을 사용하는 추세이다.
- 스프링 부트에서 기본으로 제공.
로그 선언
-
private final Logger log = LoggerFactory.getLogger(getClass());
- code
참고로 간단히 사용해보기 위해 RestController를 사용한 것으로 딱히 의미는 없다. 클래스명.class 든 getClass()든 사용하면 된다. - LoggerFactroy.getLogger(여기) 안에 해당 클래스가 들어와야 한다.
- Logger를 import할 때 org.slf4j 로 호출해야 한다.
- code
logging 기능
- 시스템 출력과 차이를 비교해보겠다.
- 출력결과
- 시스템 출력은 단순히 출력되었지만, 로그는 적은 것 외에도 정보가 추가되어 출력되었다.
- 시간 INFO 프로세스 넘버 --- [프로젝트이름] [쓰레드] 클래스위치 : 지정한 내용 출력
- 출력결과
- 다른 로깅 함수들
code 출력
- trace → 상세한 정보 기록용
- debug → 디버깅 용도
- info → 중요 정보
- warn → 경고
- error → 문제
- trace가 심각도 최하위이고, error로 갈수록 심각도가 높다.
- trace → 상세한 정보 기록용
- 모든 로그를 보고 싶은 경우
- application.properties를 설정하면 된다.
로깅레벨을 설정하는 것. - 운영서버에서는 info레벨로 많이 설정한다.
- logging.levle.root=debug 로 설정하면 프로젝트의 모든 수 많은 로그를 볼 수 있다. (비권장)
- application.properties를 설정하면 된다.
- 로그를 출력할 때
log.trace("trace log={}", 변수명);
이 형태를 무조건 지켜야 한다.
※ 만약 +를 사용하면 자바 연산이 일어나므로 절대 금지❌ - 장점
- 설정을 하면 console뿐 아니라 파일이나 네트워크 등 별도의 위치에 남길 수 있다.
또한 파일로도 남기는데 용량에 따라 분할까지 가능하다. - 용량도 System.out.*보다 덜차지 하고 좋다.
- 설정을 하면 console뿐 아니라 파일이나 네트워크 등 별도의 위치에 남길 수 있다.
Lombok에서 제공하는 애노테이션 @Slf4j 사용하면
logger 선언 필요 없이 바로 log를 사용할 수 있다.
반응형
'☕ JAVA > ☕ Library & Pattern' 카테고리의 다른 글
[JAVA]어댑터에 구조가 다른 컨트롤러 추가하기 (0) | 2025.03.02 |
---|---|
[JAVA]어댑터 패턴을 도입해 유연한 컨트롤러를 만들어보자 (0) | 2025.03.01 |
[JAVA]MVC의 Controller에 사용할 model을 직접 만들어보기 (0) | 2025.03.01 |
[JAVA]MVC의 Model 만들어보기 (0) | 2025.03.01 |
[JAVA]MVC의 View 만들어보기 (1) | 2025.03.01 |