특정 클래스에 log4j 설정 하기

프로젝트를 하다 보면 웹 어플리케이션 기본 로그를 남기지만, 모니터링 감지라든지, 외부 시스템에
로그를 전달하는 경우가 많이 있습니다.
저 같은 경우는 특정 로그를 남기는 클래스를 만들고, 별도의 lo4j 설정을 적용해서 처리를 합니다.
즉, 패키지 레벨에 적용하는 것이 아니라 “클래스” 레벨에 적용을 하는 것입니다.
심플하면서 나름 유용한 정보이니 참고 하시기 바랍니다.

※ 참고로 log4j 설치는 생략하도록 하겠습니다. 자세한 설치 방법은 (http://kimseunghyun76.tistory.com/8)
참고 하시기 바랍니다.

(1) Logger 클래스 설정

  • Logger를 생성할때 반드시 자기 클래스 타입 (“LogTest.class“)을 선언 합니다.
  • 샘플 예제이기 대문에 “hello log4j”를 출력 했습니다.

(2) log4j.xml 설정

  • 대부분 logger를 설정할때는 “패키지 레벨”을 적용 합니다. 하지만 위에서 보는 거와 같이
    클래스 full path 명을 기술 합니다.
  • additivity” 옵션은 “log4j“는 기본적으로 부모(root logger)를 상속 받기 때문에 이옵션을
    “true”로 할 경우 로그가 두번을 찍히게 됩니다. “false“를 선언하면 이걸 방지 할수 있습니다.
  • ConversionPattern” 는 로그 포맷을 설정 하는 부분입니다. “%m%n“를 선언하면 기본적으로
    제공하는 “log4j” 포맷을 무시하고, 말그대로 logger에서 찍는 그대로 로그를 남기고 싶을때
    를 말합니다.  본 예제를 실행 하면 아래와 같이 로그가 기록 됩니다.

  • 아래는 “log4j.properties” 를 쓰신 분들을 위한 설정 입니다.

(3) 예제 다운로드

  • 테스트 했던 예제를 올립니다. ^^ [다운로드]

예전 프로젝트에서는 모니터링 로그 수집시 위와 같이 응용을 했고,
이번에는 Flume-NG 수집시응용해서 사용중입니다.

댓글 남기기