答案這實際上是包含在庫下載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>
非常感謝!我想知道我是如何在FAQ中錯過的...... :) 我也在DLL中做了所有事情,看到它與您的項目有多相似會很有趣。 – 2010-03-01 08:28:36
只要再一個評論:我使用的方法,而不是宏和日誌總是包含我的包裝方法,調用者。爲了這個工作,一切都應該是一個宏觀。 – 2010-03-01 10:14:52