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 |