Log4j

43
LOG4J 똑똑하게 로그를 남기자. NHN NEXT 정문철

description

쉽게 Log4j를 사용해보기

Transcript of Log4j

Page 1: Log4j

LOG4J!

똑똑하게 로그를 남기자.

NHN NEXT 정문철

Page 2: Log4j

학습목표

-로그를 남기는 불편함과 문제점에 대해 생각해 봅니다. !-기존의 프로젝트에 Log4j를 적용을 할 수 있습니다. !-Log4j를 사용하여 일별로 로그파일을 남길 수 있습니다. !-Log4j를 사용하여 시스템 자원의 걱정 없이 오래된 로그파일을 지우고 다시 작성할 수 있게 할 수 있습니다.

Page 3: Log4j

이런 코드가 있으면 우리는…

Page 4: Log4j

Sysout으로 메시지를 출력해서 확인하곤 합니다.

Page 5: Log4j

하지만 콘솔창은 정보가 너무 빨리 바뀌고 과거의 정보들을 보기도 힘듭니다.

Page 6: Log4j

그래서 따로 로그용 함수를 만들어서 보기 쉽게 만들어 주거나

Page 7: Log4j

파일로 출력해서 나중에 확인 할 수 있게 하기도 합니다.

Page 8: Log4j

하지만 제때 제때 지워주지 않으면 점점 방대해 지는 로그 파일…

Page 9: Log4j

Q : 한 로그파일에 너무 많은 데이터가 다 쌓여있어서 보기 힘들어요! A : 로깅 함수에 시스템 날짜에 맞게 파일명을 바꾸어서 로그파일을 구분할 수 있도록 함수를 수정하겠습니다!

!Q : 시스템을 오랫동안 사용했더니 컴퓨터 용량이 꽉찼어요!

A : 너무 오래된 것은 지우도록 하겠… !

Q : 이곳이 말이죠… A : (언제 핵심기능을 수정하지?!)

어느 개발사의 이야기…

Page 10: Log4j

이미 비슷한 고민을 다 겪었습니다.

Page 11: Log4j

Apache log4j

Page 12: Log4j

Log4j는 지금 2.0버젼이 새로 나올려고 하고 있습니다. (아직까지 베타 테스트)

!기존에 사용하던 것은 1.2버젼으로

2.0과 호환성이 없습니다. (어댑터는 제공된다고는 합니다…)

!즉 나중에 새로 다시 구성을 하실 날이 오실 수 있습니다…

Page 13: Log4j

http://logging.apache.org/log4j/1.2/download.html

1.2 라이브러리 다운로드

Page 14: Log4j

다운로드 받은 라이브러리를 프로젝트에 복사를 하고

Page 15: Log4j

BuildPath에 추가해 줍시다.

Page 16: Log4j

Log4j의 Logger를 받아옵니다.

Page 17: Log4j

logger.level(“message”); 로 바로 호출 가능!

Page 18: Log4j

TRACE < DEBUG < INFO < WARN < ERROR < FATAL

로그 레벨중요덜 중요

중요도에 따라 레벨을 달리 설정하여 로그를 분류할 수 있다.

!또 하위 레벨은 상위 레벨을 포함하여

로그를 분류한다. !

예를 들어 로그 레벨을 WARN을 선택하면 WARN, ERROR, FATAL 레벨의 로그만 기록을 한다.

Page 19: Log4j

하지만 바로 사용할려고 하면 설정 파일이 없다고 문제가 발생합니다.

Page 20: Log4j

새 파일을 만들어서…

Page 21: Log4j

log4j.properties파일을 만들어 줍니다.

Page 22: Log4j

Debug레벨에 콘솔창에 출력을 해보겠습니다.

Page 23: Log4j

콘솔창에 잘 표시가 됩니다.

Page 24: Log4j

하지만 DEBUG레벨이여서 DEBUG보다 레벨이 낮은 TRACE는 표시되질 않았습니다.

Page 25: Log4j

layout.ConversionPattern을 이용하시면 더 많은 정보를 표시, 기록할 수 있습니다.

로그 뷰어에게 저 패턴으로 로그가 구성되어있다고 입력하면 뷰어가 잘 파싱하여 보여주기도 합니다.

Page 26: Log4j

자세한 표시법은 홈페이지에서! http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

Page 27: Log4j

날짜별로 로그 남기기

Page 28: Log4j

로깅모드레벨

경로파일명 패턴

로그 패턴

설정 파일을 다시 수정합시다.

파일로그 추가

Page 29: Log4j

로그는 클라이언트가 보낸 메시지로 남기고…

Page 30: Log4j

테스트 클라이언트는 반복해서 데이터를 전송합니다.

Page 31: Log4j

한번 실행시켜 보겠습니다!

Page 32: Log4j

로그가 잘 남겨지고 있습니다…

Page 33: Log4j

날짜를 수동으로 변경해보겠습니다.

Page 34: Log4j

로그가 날짜별로 잘 남겨졌습니다.

Page 35: Log4j

로그 파일이 너무 커져서 시스템에 영향을 주면 어떡하지?

Page 36: Log4j

Log Data Management Pattern

로그를 잘 남기는 패턴

PLOP 05년 Conference에 발표된 Log Data Management Pattern http://hillside.net/plop/2005/proceedings/PLoP2005_araveh0_1.pdf

Page 37: Log4j

로그 최대 사이즈를 할당하는 방법 최대 사이즈에 도달하게 되면 !로그 파일을 삭제하고 처음부터 다시 작성하는 형태

Linear Bound Log

로그 최대 사이즈를 할당하는 방법 최대 사이즈에 도달하게 되면 !로그 파일을 다 지우지 않고 처음부터 덮어 쓰는 (OverWritten) 형태

Cyclic Buffer Log

Page 38: Log4j

Linear Bound Log의 단점을 극복하기 위해, Linear Bound Log를 여러개를 만드는 방법 !하나의 로그가 맥시엄 사이즈에 도달하게 되면 새로운 로그를 생성하게 되고 N번 만큼 생성하게 되고 다시 처음 Log 부터 기록

Nx Linear Bound Log

Page 39: Log4j

Q : 파일이 업로드가 안되요! 다 0kb로 업로드 되고 있어요! A : 이때까지 문제없이 잘 돌아갔는데 갑자기 왜 그렇지?! 해킹인가?!

!!!

A : 서버 용량 전체가 로그파일이 잡아먹고 있다니…

어느 개발사의 이야기…

Page 40: Log4j

매번 지워줘야하는 로그파일… 자동으로 오래된 로그파일을 덮어서 사용하도록 합시다!

Page 41: Log4j

로깅모드

파일 최대 크기log파일 갯수

이번에는 RollingFileAppender를 사용해보겠습니다.

3kb는 테스트 결과를 빨리 보기 위해…

Page 42: Log4j

최대 용량에 도달하면 새로운 파일에 작성하고 파일이 최대 파일 갯수를 넘으면 기존의 파일에 덮어쓰기를 합니다.

Page 43: Log4j

그래도 직접 로그용 클래스를 만드시겠습니까?

뭐… 필요에 따라선 만들어야죠…