道歉,如果我失去了一些真正明显的东西,但我想了解如何编写自定义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