如果我遗漏了一些非常明显的东西,我深表歉意,但我正在尝试了解如何编写自定义 front end和 back end与 Pantheios . (我在 C++ 中使用它,而不是 C。)
我可以遵循初始化函数的目的(我认为)但我不确定其他函数:pantheios_be_logEntry
、pantheios_fe_getProcessIdentity
和 pantheios_fe_isSeverityLogged
.
尤其是,我对前端和后端之间的关系感到困惑。我如何让他们相互沟通?
最佳答案
不确定我是否完全理解您不理解的内容,但也许这就是问题的一部分。 ;-) 所以我会尽力而为,你让我知道它是否接近。
pantheios_fe_getProcessIdentity()
被调用一次,当 Pantheios正在初始化。您需要返回一个标识进程的字符串。 (实际上,它标识链接单元;由 Pantheios 的创建者 Matthew Wilson 编写的 Imperfect C++ 中定义的术语,表示链接名称的范围,即可执行程序模块或动态库模块。)
pantheios_fe_isSeverityLogged()
在应用程序代码中执行日志语句时调用。它返回非零值以指示应该处理该语句并将其发送到输出(通过后端)。如果它返回零,则不进行任何处理。 FWIU,这是Pantheios is so fast的主要原因.
pantheios_fe_isSeverityLogged()
返回非零且 Pantheios core 时,pantheios_be_logEntry()
将在要发送日志语句以进行输出时调用。已处理该语句(将代码中的所有参数组成一个字符串)。它将语句字符串发送到它应该去的任何地方。例如,be.fprintf 后端使用 fprint()
将其打印到控制台。
一旦理解了这些方面,问题的第二部分就会变得有趣。当你的前端和后端被初始化时,它们会创建一些 Pantheios 核心为它们保留的上下文(例如 C++ 对象),并在每次调用前端/后端 API 函数时返回它们。当您自定义两者时,您可以让它们通过一些他们都知道但 Pantheios 核心不知道(也不应该)知道的共享上下文进行通信,除了有一个不透明的句柄(void*
) 到它。
HTH
关于c++ - 带有 Pantheios 日志记录的自定义前端和后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1506903/