上一主题: LogRoute API下一主题: 日志文件的格式


自定义 selogrd

通过编写可以编译和链接到共享库的 C 语言程序,将用户定义的功能添加到日志路由后台进程。‑‑ LogRoute API 函数包含三个部分:

注册函数可以使用 CA ControlMinder 后台进程初始化您的 LogRoute API 函数并 进行注册。 实施函数可以将您的任务添加到标准日志路由后台进程。 在后台进程本身终止时,终止函数可以正常取消注册并关闭您的程序。

LogRoute API 函数可以利用由 CA ControlMinder 提供的函数和标头文件。 所有的日志路由函数都使用相同的注册、实施和终止函数。

LogRoute API 函数准备就绪后,即可将共享库添加到日志路由后台进程的配置文件中。

日志路由后台进程使用配置文件来确定要选择的审核日志记录,以及这些记录发送到的位置。 您可以编辑配置文件,将特定审核信息路由到日志路由后台进程支持的各种选定目标。

注意:有关配置文件和 selogrd 后台进程语法的详细信息,请参阅《参考指南》。

更多信息:

编译并与 LogRoute 库链接

函数

LogRoute API 函数

LogRoute API 函数使用由 CA ControlMinder 提供的内置函数和标头文件,它提供以下预定义的 selogrd 函数:‑

CA ControlMinder 提供以下预定义的 selogrcd 函数:

所有 LogRoute API 函数还必须针对实施的每个目标类型包含以下目标函数:

使用 pfSend、pfFree 和 pfSense 指针可以访问分组到 LOGRAPI_FUNCS 结构中的这三个函数。 API 程序员必须提供用于这些函数的各个代码,因为每个函数都完全依赖于任务。‑

编译并与 LogRoute 库链接

本部分提供编译并将 LogRoute API 函数与 CA ControlMinder 后台进程链接的说明。 这些常规说明介绍了最常见的系统配置。 每个系统都有自己特定的要求。 有关特定系统的编译器或链接器的确切详细信息,请参阅您的系统指南。

编译应用程序

必须在 LogRoute API 函数中包含标头文件 lograpi.hselogtype.h。 这些文件位于 API 子目录中。 将以下两行放在文件的顶部附近:

#include <lograpi.h>
#include <selogtype.h>

可以使用任何与 ANSI‑C 兼容的编译器。

将应用程序与 LogRoute 库链接

在编译代码之后,将生成一个包含编译版本函数的共享库。 apisamples 目录包含示例日志路由函数和演示流程的 makefile。 请注意,编译共享库通常需要使用其他编译器参数来创建位置独立代码。‑ 有关在特定系统中创建共享库的信息,请参阅有关编译器或链接器的文档。

在编写代码并创建共享库之后,将共享库添加到与代码应链接到的后台进程相关的“按需”共享库配置文件。‑

如果已编写 selogrd 的共享库,请将共享库添加到文件 ACDir/etc/selogrd.ext。 如果已编写 selogrcd 的共享库,请将共享库添加到文件 ACDir/etc/selogrcd.ext。

每个文件都包含两列:驱动程序名称和共享库路径。 按照惯例,驱动程序名称是与您的目标类型具有相同名称的字符串;不过,它可以是任何有效的 C 语言符号。

例如,如果您已编写代码来实施传呼机,则目标名称应为 pager,完整文件条目将为:

pager /usr/local/lib/libseospager.so

此文件条目意味着,后台进程 selogrd 在启动时加载共享库 /usr/local/lib/libseospager.so 并调用您的函数。

尽管一些系统支持名为 _init 的预定义函数,但建议您使用 driver_RegisterDestination 函数。 这是从共享库调用的第一个函数。

函数 driver_RegisterDestination 可注册新目标类型。 在后台进程关闭时,建议您使用函数 driver_UnregisterDestination,而不是预定义函数 _fini。

注意:使用 CA ControlMinder 函数而不是预定义的系统函数将为您的代码赋予更高的可移植性。

后台进程 selogrcd 与 selogrd 使用相同的文件配置格式。 但是,selogrcd 搜索 driver_Register 和 driver_UnRegister 函数。 如果函数 driver_UnRegister 不是必需的,可以忽略。