道歉,如果我失去了一些真正明顯的東西,但我想了解如何編寫自定義front end和back end與Pantheios。 (我用它從C++,不C.)自定義前端和後端與Pantheios日誌
我可以遵循的初始化函數的目的(我認爲),但我不確定其他人:pantheios_be_logEntry
,pantheios_fe_getProcessIdentity
和pantheios_fe_isSeverityLogged
。
特別是,我對前端和後端之間的關係感到困惑。我如何讓他們相互溝通?
道歉,如果我失去了一些真正明顯的東西,但我想了解如何編寫自定義front end和back end與Pantheios。 (我用它從C++,不C.)自定義前端和後端與Pantheios日誌
我可以遵循的初始化函數的目的(我認爲),但我不確定其他人:pantheios_be_logEntry
,pantheios_fe_getProcessIdentity
和pantheios_fe_isSeverityLogged
。
特別是,我對前端和後端之間的關係感到困惑。我如何讓他們相互溝通?
不知道我確切地理解你不明白,但也許這是問題的一部分。 ;-)所以我會盡我所能,讓我知道它是否在附近。
pantheios_fe_getProcessIdentity()
被調用一次,當Pantheios正在初始化。您需要返回一個標識進程的字符串。 (實際上,它標識該鏈接單元;在Imperfect C++定義的術語,通過Pantheios'創建者,馬修威爾遜,這意味着鏈路名稱的範圍,書面即一個可執行程序模塊或動態庫模塊)
pantheios_fe_isSeverityLogged()
在應用程序代碼中執行日誌語句時調用。它返回非零值,表示語句應該被處理併發送到輸出(通過後端)。如果它返回零,則不進行處理。 FWIU,這是Pantheios is so fast的主要原因。
pantheios_be_logEntry()
被稱爲每當日誌語句是輸出發送,當pantheios_fe_isSeverityLogged()
返回非零和Pantheios core已處理的聲明(形成所有的參數在你的代碼到一個單一的字符串)。它將語句字符串發送到應該去的地方。例如,be.fprintf後端使用fprint()
將其打印到控制檯。
一旦你瞭解了這些方面,問題的第二部分就是它變得有趣的地方。當你的前端和後端被初始化時,它們會創建Pantheios核心爲他們保留的一些上下文(例如C++對象),並在每次調用前端/後端API函數時將其返回。當你自定義時,你可以讓他們通過他們都知道的共享上下文進行通信,但Pantheios核心不知道(而且不應該)知道的,除了有一個不透明的句柄(void*
)。
HTH
謝謝。這讓我感到很舒服。 – JamieH 2009-10-02 23:06:21