로딩 간단히 알아보기
앞으로 로그를 사용할 것이기 때문에, 로그에 대해서 간단히 알아보자.
로그 사용시 장점
쓰레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양을 조정할 수 있다.
로그 레벨에 따라 개발 서버에서는 모든 로그를 출력하고, 운영서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절할 수 있다.
파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있다. 특히 파일로 남길 때는 일별, 특정 용량에 따라 로그를 분할하는 것도 가능하다.
성능도 일반 System.out보다 좋다. (내부 버퍼링, 멀티 쓰레드 등등) 그래서 실무에서는 꼭 로그를 사용해야 한다. =>성능 최적화가 잘 되어있어서 로그가 한번에 많이 나와도 내부 버퍼링이나 멀티 스레드 이슈까지 해결한다.
운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다.
로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리( spring-boot-starter-logging )가 함께 포함된다. 스프링 부트 로깅 라이브러리는 기본으로 다음 로깅 라이브러리를 사용한다. 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다. (실무에서는 스프링 부트가 기본으로 제공하는 Logback을 대부분 사용한다.) SLF4J : Interface Logback : SLF4J 구현체
로그 선언 @Slf4j : 롬복 사용 가능
로그 호출
레벨 : TRACE > DEBUG > INFO > WARN > ERROR 개발 서버는 debug레벨로 해놓고 로컬 서버에서는 trace나 debug로 바꿔가며 본다. 운영 서버는 info레벨로 셋팅한다. 로그 출력 포맷 : 시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스명, 로그 메시지
로그 레벨 설정 디폴트는 info레벨이다.
올바르지 않은 로그 사용법 : 연산을 해버린다! 로그 레벨을 info로 설정해도 Java 문법으로 연산이 일어나는 바람에 debug레벨은 출력하지 않음에도 불구하고 이 연산으로 CPU와 메모리 등 불필요한 자원이 사용된다!
올바른 로그 사용법 : data가 단순히 파라미터로 전달된다.
Last updated