2010-02-26 2 views
4

방금 ​​Pantheios을 사용하기 시작했습니다. 로깅을위한 훌륭한 라이브러리가 정말 마음에 들었습니다! 어쩌면 C++에서 가장 훌륭한 것일 수도 있습니다! 저자에게 축하를 보냅니다!Pantheios를 사용하여 로그에 호출 클래스와 회선 번호를 포함시키는 방법은 무엇입니까?

그러나 로그에 호출 클래스와 줄 번호를 포함시키는 방법에 대한 설명서 나 포럼 게시물에서 찾을 수 없습니다.

나는 be.file 같은 백 엔드를 사용하고 있는데 나는 fe.simple 의 예를 보면, 사용자 정의 프론트 엔드를 정의했다. 이게 PANTHEIOS_EXTERN_C const char PANTHEIOS_FE_PROCESS_IDENTITY[]과 관련이 있나요? 아니면 완전히 잘못된 방향으로 가고 있습니까?

답변

5

이 답변은 실제로 라이브러리 다운로드에 포함 된 FAQ 파일에 있습니다. 다음 헤더가있는 고정 백엔드 DLL이 있고 클래스, 함수 및 줄 번호를 로그 파일에 포함 할 수 있습니다.

#include <pantheios/pantheios.hpp> 
#include <pantheios/frontends/fe.N.h> 
//#include <pantheios/frontends/fe.simple.h> 
#ifndef PANTHEIOS_INCL_PANTHEIOS_H_TRACE 
#define PANTHEIOS_TRACE_PREFIX   __FILE__ "(" PANTHEIOS_STRINGIZE(__LINE__) "): " __FUNCTION__ ": " 
#endif /* PANTHEIOS_INCL_PANTHEIOS_H_TRACE */ 
#include <pantheios/trace.h> 
#include <pantheios/inserters.hpp> 
#include <pantheios/backends/bec.file.h> // be.file header 

은 여기에서 일어나고있는 것은 당신은 내가 위 한 것 인 trace.h를 포함하기 전에 PANTHEIOS_TRACE_PREFIX를 다시 정의해야한다는 것입니다. 다른 코드 행은 #define이 어디에 있는지 보여주기 위해 포함되어 있습니다. 그리고 지연된 응답에 대해 유감스럽게 생각합니다. 원하는 경우 누구나 간단한 파일 기반 로깅을 위해 솔루션에서 사용할 수있는 고정 백엔드 DLL 프로젝트로 블로그에 다운로드를 게시 할 수 있습니다. 당신이 프로젝트

업데이트 2010년 2월 28일 중부 표준시 오전 12시 53분에 관심이 있다면 코멘트를 남겨 : 참고로 여기 자주 묻는 질문에서 질문 :

Q9는 "Pantheios가 구성을 제공합니까 그 (컴파일러 지원 확인 또는 일부의 래퍼)를 작성하지 않고도

log(informational, __FUNCTION__, ": my message"); 

"그 동등한 로그인 메시지 포함하는 함수를 포함를 산출한다. [2008 년 3 월 15 일]

A9 : # 원하는 PANTHEIOS_TRACE_PREFIX을 # 정의해야합니다. 기본 으로는, 기능을 포함하도록 형식 <file>(<line>):

을 제공하는 __FILE__ "(" PANTHEIOS_STRINGIZE(__LINE__) "): " 당신이이 형식 <file>(<line>): <func>:을 갖고 싶어라고 할 수 있습니다. 다음과 같이이를 위해 당신은 그것을 정의하는 것 : 정의 pantheios/trace.h의 포함 앞에 와야한다는

#include <pantheios/pantheios.h> 
#define PANTHEIOS_TRACE_PREFIX   __FILE__ " " PANTHEIOS_STRINGIZE(__LINE__) ": " __FUNCTION__ ": " 
#include <pantheios/trace.h> 

참고. 따라서보다 안전한 방법은 다음과 같습니다.

+0

대단히 고마워요! 어떻게 FAQ에서 이것을 놓쳤는 지 궁금합니다 ... :) 나는 또한 DLL에서 모든 것을했는데 프로젝트와 얼마나 유사한지를 알면 흥미로울 것입니다. –

+0

한 번만 더 설명 : 매크로 대신 메서드를 사용했으며 로그에는 호출자로 래퍼 메서드가 항상 포함되어있었습니다. 이 작업을 위해서는 모든 것이 매크로 여야합니다. –

0

해당 정보를 자동으로 포함하는 방법을 찾지 못했습니다. __LINE__ 매크로를 사용하는 경우 물론 로그 메시지 자체에 줄 번호를 추가 할 수 있습니다. 하지만 이식성이 얼마나 좋은지 잘 모릅니다.

관련 문제