로깅이란

Date:     Updated:

카테고리:

태그:

운영 중인 웹 어플리케이션에 문제가 발생했을 경우, 문제의 원인을 파악하려면 문제가 발생했을 때의 정보가 필요하다.

이를 위해 Exception이 발생했거나 중요 기능이 실행되는 부분에서 적절한 로그를 남겨야 한다.

이를 생성하는 로깅에 대해 알아보도록 하겠다.

로깅이란?

로깅(logging)은 정보를 제공하는 일련의 기록인 로그(log)를 생성하도록 시스템을 작성하는 활동을 말한다.

이런 로그들은 테스트할 때 재현하기 힘든 버그가 개발 완료된 환경에서 발생했을 경우, 그런 버그들에 대한 정보를 알려줄 수 있으며,

구문들 사이에 걸리는 시간 등의 성능에 관한 통계와 정보를 제공할 수 있다.

로그가 제공하는 정보의 양은 프로그램이 실행되는 중에도 설정이 가능한 것이 이상적이다.

설정이 가능할 때, 로그는 예기치 못한 특정 문제들을 디버그하기 위해 코드를 수정하고 다시 적용(redeploy)하지 않아도,

일반적인 정보를 갈무리할 수 있게 해 준다. 초보자들은 프로그래밍에 대해 아는 것에 한계가 있기 때문에 로그를 사용해야 하고,

시스템 설계자들은 시스템의 복잡성 때문에 로그를 이해하고 사용해야 한다.

로그 라이브러리

가장 간단하게 로그를 출력할 수 있는 방법은 System.out.println()을 이용하는 것이다.

실행 중 다양한 입출력 및 변수 값들을 출력할 수 있다.

하지만 System.out.println() 명령은 출력되는 로그의 양이나 수준을 조절할 수 없고, 출력된 로그를 파일 등에 저장하기도 불편하다.

성능 면에서도 굉장히 낮은 편에 속한다. System.out.println()을 자주 이용하면 웹 어플리케이션의 속도는 상당히 느려진다. 운영 중인 서버에는 이걸로 로그를 남기면 안 된다.

그래서 실제로는 로깅을 할 때 따로 라이브러리를 사용한다.

자바 개발자들을 위한 로깅 라이브러리는 다양하므로, 직접 로그를 출력하는 기능을 개발할 필요는 없다고 한다.

다만, 다양한 라이브러리들 중, 적합한 것을 고르는 안목이 필요하다.

이제 자주 사용되는 로그 라이브러리들을 살펴보려고 한다.

1) java.util.logging

JDK 1.4부터 포함된 표준 로깅 API이다. 별도의 라이브러리를 추가할 필요가 없다.

하지만 기능이 많이 부족하여 다른 로그 라이브러리를 더 많이 사용한다.

2) Apache Commons logging

아파치 재단의 Commons 라이브러리 중 로그 출력을 제공하는 라이브러리다.

3) Log4j

아파치 재단에서 제공하며, 가장 많이 사용되는 라이브러리다.

4) Logback

Log4j를 개발한 Ceki Gulcu가 Log4j의 단점을 개선하고 기능을 추가하여 개발한 로깅 라이브러리다.

이렇게 로깅 관련 라이브러리는 굉장히 다양하다.

SLF4J는 이러한 라이브러리들을 하나의 통일된 방식으로 사용할 수 있는 방법을 제공하고 있다.

SLF4J는 로깅 Facade(퍼사드)이다. 로깅에 대한 추상 레이어를 제공하는 interface의 모음이다.

SLF4J는 다음 글에서 이어보도록 하겠다.

Spring 카테고리 내 다른 글 보러가기

댓글남기기