自定义前端和后端与Pantheios日志记录

时间:2009-10-01 22:46:05

标签: c++ logging pantheios

道歉,如果我遗漏了一些非常明显的内容,但我正在尝试了解如何使用front end编写自定义back endPantheios。 (我使用的是C ++,而不是C语言。)

我可以遵循初始化函数的目的(我认为),但我不确定其他人:pantheios_be_logEntrypantheios_fe_getProcessIdentitypantheios_fe_isSeverityLogged

特别是,我对前端和后端之间的关系感到困惑。如何让他们互相沟通?

1 个答案:

答案 0 :(得分:3)

不确定我完全理解你不理解的东西,但也许这是问题的一部分。 ;-)所以我会尽我所能让你知道它是否接近。

Pantheios正在初始化时,

pantheios_fe_getProcessIdentity()被调用一次。您需要返回标识进程的字符串。 (实际上,它标识了链接单元; Imperfect C++中定义的术语,由Pantheios的创建者Matthew Wilson编写,这意味着链接名称的范围,即可执行程序模块或动态库模块。)< / p> 只要在应用程序代码中执行日志语句,就会调用

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