- 정보를 제공하는 일련의 기록인 로그(Log)를 생성하도록 시스템을 작성하는 활동.
- 프린트 줄 넣기는 간단한 로그를 생성하기만 한다.
- 버그에 대한 유용한 정보를 제공할 수 있다.
로그를 출력하는 방법에는 2가지가 존재한다.
우리는 Java를 처음 배울때 기록하는 기능인 System.out.println() 을 배웠을 것이다. 하지만 이런 기능은 시스템을 운영하는 데에 있어서 적절하지 않다. 왜 정보를 System.out.println()으로 남기지 않는 것일까?
- 성능상의 문제 - 속도가 너무 느리다.
- 최소한의 정보가 없다. - 날짜/시간/타입(error, info, debug...) 등과 같은 정보가 기본적으로 없다.
- 콘솔창에 출력만 하기 때문에 나중에 다시 확인할 수 가 없다.
- 데이터를 쌓고 남기기 힘들다.
이러한 이유로 System.out.println() 으로 로그를 남기는 것은 상용서버에서는 하면 안된다.
로그는 주로 로깅 라이브러리를 이용하여 남긴다. 최소한의 정보(날짜/시간/타입 등)가 제공된다. 데이터를 서버에 저장하고 파일화가 가능하다.
- Java.uti.logging - JDK 1.4부터 포함된 표준 로깅API (기능이 부족하다)
- Apache Commons logging - 아파치 재단의 Commons 라이브러리 중에 로그 출력을 제공하는 라이브러리
- Log4j - 가장 오래된 로깅 프레임워크이다. 2015년 기준으로 개발이 중단되었다.
- Logback - log4j이후 출시된 로깅 프레임워크이다. logback은 Springboot의 spring-boot-starter-web안에 spring-boot-starter-logging의 logback이 포함되어 있다.
- Log4j2 - 가장 최근에 등장, Logback와 같은 기능을 가지고 있다.
- slf4j
- Simple Logging Facade For Java 의 약자로 logger 추상체이다. logback이나 log4j와 같은 프레임워크의 인터페이스 역할을 해준다. log4j를 사용하다가 log4j2를 교체하면 많은 코드 수정이 발생하는데 이러한 점을 고려해서 slf4j를 사용하고 log4j를 연결하여 사용하면 이후에 수정이 쉽다.
