본문 바로가기

프로그램언어/Summary

log4cxx을 이용한 사용기

프로그램을 이용하여 로그를 남기는 방식은 다양하게 존재합니다. 어떤 사람은 타 응용툴을
이용하는 사람도 있구, 아니면 print로 찍어서 보는 사람이 있습니다. 기타 로그를 볼 수 있는
기능들이 많이 존재함을 알려드립니다.

하지만 제가 사용하고 있는것은 apache에서 사용되고 있는 log4cxx을 이용하여 쉽게 로그를
파일 또는 콘솔에 찍거나 또는 파일로 남길 수 있는 기능이 있어서 이렇게 모르는 분들을 위해서
보여드릴까 합니다.

저는 리눅스 프로그래머 입니다. 제가 사용하고 있는 머신을 돌리면서 파일로 수시로 ERROR
발생한 것을 grep으로 검색한 후, 문제를 진단을 하고 그에 준하는 조치를 취하고 있습니다.
하루 일과중 하나입니다. 지금 사용하고 있는 버전이 0.9.8 을 사용하고 있구 release 0.10.x
버전이 되면서 저의 머신에 업데이트 할겸 테스트 하기 위해서 윈도우에서 테스트 환경을
구성하였습니다. 솔직히 윈도우는 잘 모릅니다. 

일단 앞전에 설명
http://tingcobell.tistory.com/47  을 해놓았습니다. 컴파일에 관련된 내용입니다.

// main.cpp

#include "Core.h"
#include 
using namespace com::foo;

// include log4cxx header files.
#include 
#include 
#include 
#include 

using namespace log4cxx;
using namespace log4cxx::helpers;

LoggerPtr logger(Logger::getLogger("MyApp"));
//LoggerPtr logger(Logger::getLogger("logging.properties"));


int main(int argc, char **argv)
{
        int result = EXIT_SUCCESS;
        try
        {
                // Set up a simple configuration that logs on the console.
                BasicConfigurator::configure();
				//PropertyConfigurator::configure(LOG4CXX_FILE( "logging.properties" ));

                LOG4CXX_INFO(logger, "Entering application.");


                Bar bar;
                bar.doIt();
                LOG4CXX_INFO(logger, "Exiting application.");

				//FILE *fp;
				//fp = fopen("_USER_DATA_SIZE.txt", "rw");

				//if ( fp == NULL ) {
				//	LOG4CXX_ERROR( logger, " File Open Error " );
				//} else {
				//	LOG4CXX_INFO( logger, "File Open Success");
				//}
				//fclose(fp);

        }
        catch(Exception&)
        {
                result = EXIT_FAILURE;
        }

        return result;
}



지금은 default 로 설정해서 기본적인 출력만 가능하게 되었습니다. 이것을 응용을 하게 된다면
막강한 기능이 됩니다.

작업중인 내용은 properties의 파일을 읽어 파일에 들어 있는 내용읽어 속성을 반영할 수 있도록
할 수도 있습니다. 예를 들어서 파일로 만들것 인지 아니면 콘솔로 내용을 찍을지 기타 등등
설정을 할 수 있습니다.



//core.h
#include 

namespace com {
   namespace foo {
      class Bar {
          static log4cxx::LoggerPtr logger;
          
      public:
          void doIt();
       };
    }
}


//core.cpp
// file bar.cpp
#include "core.h"

using namespace com::foo;
using namespace log4cxx;

LoggerPtr Bar::logger(Logger::getLogger("com.foo.bar"));

void Bar::doIt() {
   LOG4CXX_DEBUG(logger, "Did it again!");
}

사용자 삽입 이미지
사용자 삽입 이미지

사용자 삽입 이미지

지금까지 간단하게 알아보았습니다. 지금까지는 디폴트라는걸 아셨으면 합니다.
이것을 응용해서 리눅스에 컨버팅하기전에 윈도우에서 좀더 자세히 만들어 볼까 합니다.

'프로그램언어 > Summary' 카테고리의 다른 글

[ OOAD ] 요구사항수집  (2) 2009.03.01
두뇌를 정복하는 방법  (0) 2009.02.28
Fonts 소개  (0) 2008.08.11
[eclipse3.4 ] C / C++ Development  (0) 2008.08.09
Building Apache log4cxx  (0) 2008.08.04