2010-02-26 21 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分CST任何利息:供您參考這裏距離FAQ問題:

Q9:「難道Pantheios提供一個配置其產生一個登錄消息 含有含功能,等同於:

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

,而不必編寫(或一些包裝,用於編譯器支持檢查)「。 [2008年3月15日]

A9: 您需要#定義PANTHEIOS_TRACE_PREFIX到你想要的。默認情況下, 是__FILE__ "(" PANTHEIOS_STRINGIZE(__LINE__) "): ",這給 格式<file>(<line>):

要包括的功能,讓說,你希望它的格式爲<file>(<line>): <func>:。要做到這一點,如下所示你定義它:

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

注意,定義必須列入pantheios/trace.h裏的面前。因此,更安全的做法如下:

/* File: myPantheiosRootHeader.h */ 
#include <pantheios/pantheios.h> 

#ifdef PANTHEIOS_INCL_PANTHEIOS_H_TRACE 
# error pantheios/trace.h must not be included before myPantheiosRootHeader.h 
#endif /* PANTHEIOS_INCL_PANTHEIOS_H_TRACE */ 

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

非常感謝!我想知道我是如何在FAQ中錯過的...... :) 我也在DLL中做了所有事情,看到它與您的項目有多相似會很有趣。 – 2010-03-01 08:28:36

+0

只要再一個評論:我使用的方法,而不是宏和日誌總是包含我的包裝方法,調用者。爲了這個工作,一切都應該是一個宏觀。 – 2010-03-01 10:14:52

0

我還沒有找到一種方法來自動包含這些信息 - 你當然可以,如果你使用__LINE__宏的行號添加到日誌消息本身。不知道這是多麼便攜。

相關問題