c-日志记录功能的配置



我编写了一个简单的日志记录函数,它显示时间戳并使用vprintf()来模拟printf()。现在,我的主程序正在将配置文件读取到struct configuration中。我计划让日志记录函数使用这个配置来确定它应该登录到哪里(std{out,err},syslog,其他一些文件,…)。那么,让我的日志记录函数知道它应该登录在哪里的最佳方法是什么?我想让我的struct configuration * config成为一个全局变量,在main()之前声明,并在log.h中包含extern struct configuration * config,以便log.c可以使用它。但每个人都在说"全局变量很糟糕,不要使用它们",所以我想知道是否有更好的方法。

好吧,全局配置需要是全局的。因此,我认为这是一个例外。但是,在大多数情况下,您可能希望将struct公开为const。这将有助于缩小哪些模块正在改变未来的全球状态。

要实现这一点,请使用一个全局函数来公开const指针,而不是直接的extern。实际上,您也可以将配置struct声明为static。这将进一步消除意外访问。

如果此日志记录配置在任何时候都适用于(并且始终适用于)整个系统,那么这将是少数可以使用全局变量imho的情况之一。

您应该考虑是需要整个配置结构global,还是只需要日志配置值。

相关内容

  • 没有找到相关文章

最新更新