전자정부 표준프레임워크 3.0부터는 다양한 Logging Framework와 연계할 수 있도록 SLF4J를 도입하였고,
Logging 구현체는 Log4j 2를 이용하여 Logging을 수행한다.
Logging 서비스는 시스템의 개발이나 운용시 발생할 수 있는 사항에 대해서,
시스템의 외부 저장소에 기록하여 시스템의 상황을 쉽게 파악할 수 있도록 도와준다.
뿐만 아니라 테스팅 코드와 운영 코드를 동일하게 가져가면서 로깅을 선언적으로 관리할 수 있다.
과도한 Logging은 운영시 성능 오버헤드를 발생시킬 수 있으므로, 최소화할 수 있는 메커니즘이 필요하다.
많은 개발자가 Log을 출력하기 위해 일반적으로 사용하는 방식은 System.out.println()이다.
하지만 이 방식은 간편한 반면, 다음과 같은 이유로 권장하지 않는다.
콘솔 로그를 출력 파일로 리다이렉트 할 지라도, 어플리케이션 서버가 재시작할 때 파일이 overwrite될 수도 있음
개발/테스팅 시점에만 System.out.println()을 사용하고 운영으로 이관하기 전에 삭제하는 것은 좋은 방법이 아님
System.out.println() 호출은 디스크 I/O동안 동기화(synchronized)처리가 되므로 시스템의 throughput을 떨어뜨림
기본적으로 stack trace 결과는 콘솔에 남지만, 시스템 운영 중 콘솔을 통해 Exception을 추적하는 것은 바람직하지 못함
운영시의 코드가 테스트시의 코드와 다르게 동작할 수 있음
본 페이지에서는 SLF4j와 Log4j 2에 대한 기본 사용법과 Migration에 대해 설명한다.
이 위키의 내용은 다음의 라이센스에 따릅니다 :
CC Attribution-Noncommercial-Share Alike 3.0 Unported전자정부 표준프레임워크 라이센스(
바로가기)
전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.