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 |
31 |
Tags
- 파이썬
- 이진탐색
- AWS EC2
- 백준
- 영화감독숌
- EC2 쉽게 연결하기
- Spring #Springboot #스프링 #김영한 #springmvc
- 코딩테스트
- HTTP #모든개발자를위한HTTP
- 알고리즘
- 이분탐색
- 자바 #버퍼 #자바입출력 #BufferedReader #BufferedWrite
- ssh config
- EC2
Archives
- Today
- Total
우주개발
Spring, 로그는 왜 사용하는가 본문
Spring 로깅을 알아보자
서비스 운영 시스템에서는 System.out.println()을 사용해서는 안된다.
그러니 라이브러리를 사용해서 로그를 노출시켜야한다.
스프링 부트 사용시 spring-boot-starter-logging
이 포함되어 있어 이를 기본으로 사용한다고 한다.
로그 선언
private Logger log = LoggerFactory.getLogger(getClass());
private static final Logger log = LoggerFactory.getLogger(Xxx.class)
로그의 레벨
trace < debug < info < warn < error 순으로 레벨이 올라간다
개발서버에서는 debug 레벨로 출력을 하고
운영서버에는 info 레벨로 출려을 한다
resource/application.properties
#전체 로그 레벨 설정(기본 info)
logging.level.root=info
#hello.springmvc 패키지와 그 하위 로그 레벨 설정
logging.level.hello.springmvc=debug
logging.level.root의 경우에는 root 레벨에서 info로 설정을 하는 것이다.
root 레벨을 trace나 debug로 설정할 경우, 굉장히 많은 로그가 출력될 수 있으니 주의해야한다.
우리는 우리가 실제로 개발하는 패키지 파일의 로그를 확인해야 하므로
하위 로그 레벨을 설정해야하는 것이다.
올바른 로그를 출력하는 방법
log.debug("data" + data);
로 출력을 하면 기본적으로 설정되어 있는 로그레벨 보다 높은 레벨을 설정해도
문자열 연산이 "data"와 data(변수)안에 있는 연산이 실행된다.
이렇게 되었을 때 출력은 되지도 않지만, 연산이 되기 때문에 메모리 리소스를 낭비하게 된다.
따라서 log.debug(" data={}", data);
와 같이 로그를 출력해야만 한다.
🤔 그래서 로그를 왜 사용하는가?
- 쓰레드의 정보, 클래스 이름 등 부가 정보를 함께 볼수 있으며 출력 모양을 조정할 수 있음
- 로그 레벨을 설정해 개발 서버에서는 모든 로그를 출력하고 운영서버에서는 출력하지 않게 하는 가변성이 있다.
- System.out 콘솔에만 출력하는 게 아니라 파일이나 네트워크 등의 로그를 별도 위치에 남길 수 있다. 용량에 따라 파일 분할도 가능하다.
- 성능이 System.out 보다 좋다.