我大部分时间都在用 C 编写软件。最近,我一直在研究可以归类为中间件的库。它们只需要存在就可以使两个软件进行通信。
在开发过程中,我发现分析日志可以更快、更轻松地跟踪和隔离错误。显然,我希望该库的任何生产使用都不需要经常检查日志输出。
但现实是一些错误只出现在生产环境中。造成这种情况的一个常见原因可能是库对面的实现,它正在做一些在标准方面属于灰色区域的事情。因此,需要能够分析来自生产环境的日志。
那么从中间件类型的 API 公开日志记录的最佳实践是什么?有没有关于这个主题的文献?
目前我有两个想法:
第一种是#define
在我的源代码中使用 a 来控制日志记录语句的存在。在生产环境中,该库可以编译两次。一个共享对象将启用日志记录语句。另一个将在没有日志记录的情况下进行优化。通过在运行时更改动态链接的库,可以启用和禁用日志记录。
这种#define
方法可行,但可能不够灵活。另外,我不是很关心性能。我采取先实施,后优化的方法。
我的第二种方法是坚持 UNIX 风格的哲学,只在库中有一个函数,用于通过传入文件描述符来启用日志记录。这将使日志记录在运行时启用或禁用。如果设置了文件描述符,则启用日志记录。如果未设置,则不进行记录。显然,这有其自身的缺点。但这是一种简单的方法。