2011-02-01 5 views
8

로깅 라이브러리를 사용하려면 약 2 주가 소요되었습니다. Log4cxx, Log4cpp, log4cplus 및 boost.log를 시도했습니다. 문제는 이들 중 어느 것도 나를 위해 일하지 않는다는 것입니다. 나는 그들이 일하게하는 방법을 알아 내지 못합니다. 직장에서 log4j/logback을 사용하고 있기 때문에 log4cxx를 사용하고 싶습니다. 그러나 log4j를 기반으로하는 라이브러리를 만들 수 없었습니다. boost 라이브러리를 빌드하고 사용할 수 있었지만 boost.log는 내가 무엇을 시도하든 모든 종류의 링커 오류를 발생시킵니다. 누구든지 나를이 라이브러리 중 하나를 얻으려는 단계별 가이드로 안내 할 수 있다면 크게 감사하겠습니다. 그게 중요하다면 또한, 내 IDE로 Eclipse를 사용하고 있습니다.C++ 로깅 라이브러리 설정

+1

사용중인 운영 체제는 무엇입니까? 또한 먼저 라이브러리를 컴파일 한 다음 헤더 파일을 프로젝트에 포함하십시오 (구현이 라이브러리 **로 ** 컴파일되어 거대한 라이브러리를 여러 번 다시 컴파일 할 필요가 없음) – RageD

+0

Windows 7을 사용하고 있습니다. 컴파일하고 헤더 파일을 가져 오는 것이 무슨 뜻인지 잘 모르겠습니다. 죄송합니다. 제 3 자 라이브러리를 처음 사용하는 경우가 있습니다. 적어도 부스트 루트에 부스트 루트 디렉토리를 include 경로로 추가 한 다음 필요한 각 파일에 include 지시문을 사용하십시오. – Shenlong55

답변

0

을 권해드립니다. make build test을 입력하고 점심을 먹으면서 링크를 생성 할 때 출력 스트림을 선택해야합니다 (Pantheios는 링크 타임에이를 "백엔드"라고 부릅니다).하지만 코딩 작업에는 매우 간단합니다.

std::string name; 
int age; 

pantheios::log_DEBUG("name=", name, " age=", pantheios::integer(age)); 

그것은 속도의 처음부터 설계 -은 "DEBUG"레벨에 전환되어 있지 않으면 나이가 문자열로 변환되지 않습니다 - 그리고 견고이 - 어떤 이유 당신은 할 수 없습니다 기본 유형을 직접 전달하고 "삽입 자"(예 : pantheios::integer)를 사용하십시오. 자세한 내용은 Pantheios의 저자가 this recent blog post을 참조하십시오.

1

혹시이 기능을 사용하셨습니까? Log4cxx는 Win7에서 확실히 작동합니다. 어쩌면 빌드 오류 중 일부를 게시 할 수 있습니다. 그냥 짐작할 수 있겠지만, 아마도 당신은 log4cxx 정적 라이브러리와 연결되도록 이클립스 프로젝트를 구성하지 않았을 것입니다.

1

Boost.Log는 저를 위해 아주 잘 작동합니다 (Linux 및 Windows). 헤더 전용 라이브러리가 아니며 링크해야하는 컴파일 된 부분이 있습니다. here의 지침을 참조하십시오. 또한이 아닌 다른 헤더에 따라

, 도서관 부스트 :

로깅 라이브러리도 건물을 할 몇 가지 다른 부스트 라이브러리를 사용합니다. 이것들은 Boost.Filesystem, Boost.System, Boost.DateTime, Boost.Thread 및 Boost.Regex입니다. 건물 절차에 대한 자세한 지침은 설명서를 참조하십시오.

플랫폼에 따라 사전 빌드 된 Boost 라이브러리 버전이있을 수 있습니다. 그렇지 않으면 지시 사항을 따르면 직접 작성하십시오. 막혔다면 정확히 어디서 붙잡 혔는지,보고있는 내용을 업데이트하십시오.

0

나는 log4cxx가 작동하도록 관리했는데, 이것은 Windows 7 OS에서 실행되는 Visual Studio 2013에서 수행되었습니다. http://apr.apache.org/download.cgi

그런 다음, http://logging.apache.org/log4cxx/download.html

다운로드 4월

가 log4cxx 우편 패키지를 다운로드 내용을 추출하고 4 월 UTIL ZIP 패키지 :

이 다음

은 내가했던 단계적으로 무엇인가

  1. 이 지퍼 apr-1.2.11-win32-src를 수동으로 추출하십시오.ZIP은 (는 수동 이름을 변경하지 않으면 추출 폴더 '4월'라는되어야 그것은)
  2. 은 수동 압축 apr-util-1.2.10-win32-src.zip 추출합니다 ( 추출 폴더 이름을 지정해야 (이 는
) configure.bat를 실행합니다 CD 아파치 log4cxx-0.10.0의 구성 : '4 월 UTIL'그렇지 않은 경우, 수동으로
  • 은 다음 명령 프롬프트를 열고 실행)로 이름을 바꿉니다

    APR ICONV 및 LDAP 지원을 사용하지 않도록 설정해야합니다.

    1. 열기 4 월의 util \ \ apu.hw이 포함 그렇게하기 위해, 우리는 수동으로 다음 파일을 추가합니다. "#define APU_HAVE_APR_ICONV"로 시작하는 줄을 찾으십시오. 값을 0으로 변경하고 저장하십시오.
    2. apr-util \ include \ apr_ldap.hw를여십시오. 으로 시작하는 줄 찾기 "#define APR_HAS_LDAP"값을 0으로 변경하고 저장하십시오.

    * .dsw 을 * .cxproj로 변환하려면 log4cxx.dll을 빌드해야합니다.

    1. Visual Studio 2013을 시작하고 log4cxx.dsw를 엽니 다.
    2. VS는 모든 것을 변환하고 싶은지 묻습니다. 예를 클릭하십시오. 마이그레이션 보고서에 몇 가지 경고가있을 수 있지만 은 솔루션이 열리지 않도록해야합니다.

    > 프로젝트 xml, apr 및 apr-util을 성공적으로 빌드해야합니다.

    log4cxx 프로젝트를 컴파일하려고하면 대부분 이 수백 개의 오류로 실패 할 가능성이 높습니다. 이는 VC++ 의 버그로 해결할 수 있습니다.

    1. 이동 외부 (위) 모든 매크로가에있는 클래스. LOG4CXX_LIST_DEF 매크로는 클래스를 정의하는 데 사용됩니다. 오류 C2252에서보고 된 모든 매크로는 모든 클래스에서 이동해야합니다. 이 에는 매크로에서 사용되는 이동 정의가 포함될 수도 있습니다.
    2. 다음으로,이에 따라

    >의 log4cxx 프로젝트는 지금 컴퓨터에 성공적으로 을 컴파일해야한다 (이것은 더 이상 부모 클래스에서 중첩 된) 모든 LoggingEvent :: 키 집합에 키 집합을 변경할 수 없습니다.

  • 관련 문제