Java2EE Framework/Logging

로깅 프레임워크 Log4j

본클라쓰 2010. 6. 12. 12:08


 Logging 프레임워크는 시스템의 로그(에러나 상태에 대한)를 쉽게 작성할 수 있도록 도와주는 프레임워크로 Logging을 사용하면 시스템 내부 정보를 시스템의 외부 저장소에 기록하여, 시스템의 상황을 쉽게 파악할 수 있게 지원하는 서비스이다. logging 프레임워크가 지원하는 로깅은 다음과 같다.

  • 서브 시스템 별 상세한 로그정책 부여
  • 다양한 형식(날짜형식, 시간형식 등)의 로그 메시지 형태 지정
  • 다양한 매체(File, DBMS, Message, Mail등)에 대한 기록 기능 설정

 

 많은 개발자가 Log를 출력하기 위해 일반적으로 사용하는 방식은 System.out.println()이다. 하지만 이 방식은 간편한 반면에 다음과 같은 이유로 권장하지 않는다.

  • 콘솔 로그를 출력 파일로 리다이렉트 할지라도, 어플리케이션 서버가 재 시작할 때 파일이 overwrite될 수도 있음.
  • 개발/테스팅 시점에만 System.out.println()을 사용하고 운영으로 이관하기 전에 삭제하는 것은 좋은 방법이 아님.
  • System.out.println() 호출은 디스크 I/O 동안 동기화(Synchronized)처리가 되므로 시스템의 throughput을 떨어뜨림
  • 기본적으로 stack trace 결과는 콘솔에 남는다. 하지만 싯템 운영 중 콘솔을 통해 Exception을 추적하는 것은 바람직하지 못함.

 만약, 아직도 System.out.println() 메소드를 사용하거나 e.printStackTrace() 메소드를 사용한다면 Logging 프레임워크를 사용하는 것을 추천한다.

 

[출처] 정부표준 프레임워크 교안

 

 

 

Log4j의 로깅 환경 설정하는 방법

  • 프로그래밍내에서 직접 설정하는 방법
  • 설정 파일을 사용하는 방법(.properties 또는 .xml)

 

Log4j의 주요 컴포넌트

  • logger : 로깅 메시지를 Appender에게 전달하고, 레벨에 따른 로그 출력을 결정
  • Appender : 로깅 메시지를 파일에다 기록할 것인지, 콘솔에 출력할 것인지 매개체 역할
  • layout : Appender가 생성할 때 전달하는 객체로 로그의 출력 형식을 담고 있다.

프로그래밍으로 본 Log4j 의 구조

 

private Logger logger = Log.getLogger( this.Class );   // 로거 생성


String layout = "%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n";

PatternLayout pLay = new PatternLayout( layout );    // Layout 지정


String logFile ="DailyLog.log";
String datePattern =".yyyy-MM-dd";
DailyRollingFileAppender appdender = new DailyRollingFileAppender( pLay, logFine, datePattern );  // Appender 생성

logger.addAppender( appdender );
logger.setLevel( Level.INFO );
logger.error("error");

 

 

로그 레벨

  • TRACE : 가장 낮은 레벨
  • DEBUG : 일반 정보를 상세히 나타냄
  • INFO : 일반 정보를 나타냄
  • WARN : 에러는 아니지만 주의할 필요가 있을 사용
  • ERROR : 일반적인 Exception 이나 에러가 발생했을 경우
  • FATAL : 가장 높은 레벨

 

참고 :   GoodBug (unicorn@jakartaproject.com) , http://www.jakartaproject.com

'Java2EE Framework > Logging' 카테고리의 다른 글

Log4j.properties 설정 파일 작성 방법  (0) 2010.06.12
Log4j 를 사용한 예제  (0) 2010.06.12
웹 애플리케이션에 Log4j 적용  (0) 2010.06.12