로깅

박준수·2023년 3월 2일

[플러스]

목록 보기
1/1

로깅(Logging)이란?

  • 정보를 제공하는 일련의 기록인 로그(Log)를 생성하도록 시스템을 작성하는 활동.
  • 프린트 줄 넣기는 간단한 로그를 생성하기만 한다.
  • 버그에 대한 유용한 정보를 제공할 수 있다.

로그를 출력하는 방법에는 2가지가 존재한다.

  1. System.out.println()
  2. 로깅(Logging) 라이브러리

System.out.println()

우리는 Java를 처음 배울때 기록하는 기능인 System.out.println() 을 배웠을 것이다. 하지만 이런 기능은 시스템을 운영하는 데에 있어서 적절하지 않다. 왜 정보를 System.out.println()으로 남기지 않는 것일까?

  1. 성능상의 문제 - 속도가 너무 느리다.
  2. 최소한의 정보가 없다. - 날짜/시간/타입(error, info, debug...) 등과 같은 정보가 기본적으로 없다.
  3. 콘솔창에 출력만 하기 때문에 나중에 다시 확인할 수 가 없다.
  4. 데이터를 쌓고 남기기 힘들다.

이러한 이유로 System.out.println() 으로 로그를 남기는 것은 상용서버에서는 하면 안된다.

로깅(Logging) 라이브러리

로그는 주로 로깅 라이브러리를 이용하여 남긴다. 최소한의 정보(날짜/시간/타입 등)가 제공된다. 데이터를 서버에 저장하고 파일화가 가능하다.

  • 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를 연결하여 사용하면 이후에 수정이 쉽다.

profile
방구석개발자

0개의 댓글