Library2008. 7. 28. 11:27

이번에 개발중인 프로젝트에서 로그를 남겨야 할일이 생겨서 Log4cxx 를 사용해 보기로 했다.
근데 이놈이 사용하려고 하니 좀 까다로운 놈이어서 한번 짚고 넘어가 본다.

Log4cxx 아파치 프로젝트중 하나이며 물론 오픈 소스 프로젝트 이다.
그래서 라이센스도 아피치 라이센스 정책을 따른다. 

Log4cxx 는 형제들이 있다. 자바버전의 Log4j 와 닷넷 버전의 Log4net 이 있고, 친구 격인 자바로 만든 로그 뷰어 Chainsaw 도 있다. Log4cxx 는 자바버전의 Log4j 를 컨버팅 한것이므로 막네격이다.

아파치 로깅 라이브러리는 다음과 같은 좋은 기능들이 있다.
- 사용이 편하다. (노가다로 일일이 코딩하는거 보다야 ....)
- 다양한 인자를 처리 할수 있는 출력형식을 가지고 있다. (날짜, 스레드번호, 내용, 로거이름 등등)
- 연동 가능한 GUI 툴(Chainsaw)이 있다.  (아직 사용 안해봤따 ㅡㅡ)
- 다양한 형태의  OUTPUT 을 볼수 있다. (파일, 콘솔, XML, 이벤트로거, 원격서버, 메일전송 등등)
- 멀티스레드를 지원한다. (막상 코딩하자면 여간 귀찮은 일이 아니다 ㅡㅡ)

사실 하나의 형식에 하나의 OUTPUT 만 필요하다면 직접 코딩하는것이 더 빠르고 편할수 있다. 하지만 관리자들의 까다로운 입맛에 맞추자면 추후에 어떠한 형식으로 로그를 남겨야 할지 예측하기 힘들다. ㅡㅡ
 그러므로 로그가 꼭 필요한 프로젝트라면 미리 한번 고민해 볼만 하겠다.

이제 대충 서론을 마치고 Log4cxx 를 사용해 보자. 처음 시작할때 이놈이 좀 까다로운 놈이라고 했었다.
왜 까다로운놈인지 알아보자.
먼저 이놈은 ACE 라이브러리 같이 소스를 직접 다운 받아 컴파일 하여 사용하여야 한다. 이전에는 Lib 형식도 지원했다고 하지만 현재버전(0.10.0)에서는 dll 형식으로만 사용 가능하다고 한다.

그럼 이제 이놈을 빌드해 보자.
먼저 준비물 부터 챙겨 보도록 하자.

- Log4cxx : 빌드할 소스이다.
- APR : (Apache Portable Runtime) 아파치 프로젝트를 만들고 유지하기 위한 라이브러리
- APR Util : 위에놈을 사용하는 놈이겠지...
- GNU Sed : 에디터 이다. 보통 윈도우에서는 잘 사용하지 않는것으로 알고 있다. (윈도우 버전으로 설치)
                  log4cxx 빌드 하기전에 배치파일을 실행하는데 배치파일에서 이녀석을 사용한다.


자 그럼 이제 설치해 보도록 하자

먼저 다운 받은 4개의 파일을 한폴더에 몰아 넣자 ... 나는 "C:\library" 폴더에 넣었다.
그다음 압축된 파일들의 압축을 풀자.

사용자 삽입 이미지

[그림1]


압축을 푼 다음 2개의 폴더에 이름을 변경한다.
"apr-1.3.2" ==> "arp"
"apr-util-1.3.2" ==> "apr-util"

사용자 삽입 이미지

[그림2]


이제 다운 받은 "sed-4.1.5-setup.exe" 프로그램을 설치한다.
설치한 다음 sed 실행파일이 있는 곳에다 파일 패스를 잡는다.
"내컴퓨터" 오른쪽 마우스 클릭 ==> "속성" ==> "고급" ==> "환경변수" ==> "path" 에 등록한다.
[그림3] 참고 하시라

사용자 삽입 이미지

[그림3]


자 이제 준비가 끝났다.

이제 빌드를 해보자 먼저 VC 2005 를 이용해서
"C:\library\apache-log4cxx-0.10.0.tar\projects\log4cxx.dsw" 를 실행한다. 이 파일은 VC60 버전으로 제작된 파일이라 변환할꺼냐고 묻을 것이다. 그럼 모두 변환한다고 하자.

% 현재 진행중인 프로잭트가 2005 를 사용하므로 나는 2005로 빌드 했다. 필요에 따라 변경하기 바란다.

그리고 "Rebuild ALL" 하면 Debug 또는 Release 폴더에 log4cxx.dll 이 생성된다.

% 이 순서대로 빌드를 했는데도 오류가 발생한다면 Micorsoft Windows SDK 1.0 를 설치 한후 포함파일과 라이브러리 파일을 맨위로 설정하고 다시 빌드해 보라. (1.0 버전만 된다는 설도 있기는 하지만 꼭 그렇지만은 않은것 같다.)

'Library' 카테고리의 다른 글

TR1 유용한 클래스/함수 (1) ... tuple  (0) 2010.01.14
C++ TR1 설치  (0) 2010.01.08
Boost 라이브러리 설치  (9) 2008.07.13
TDD(Test Driven Development)  (2) 2008.05.06
ACE Library 설치 & 설정 & 사용기  (0) 2008.04.30
Posted by 상현달