我写了一个简单的日志记录功能,显示时间戳并使用来模拟printf()
。现在,我的主程序正在将配置文件读入struct configuration
。我计划使日志记录功能使用此配置来确定它应该登录到的位置(std {out,err},syslog,其他文件,...)。那么,使我的日志记录功能知道它应该登录到哪里的最好方法是什么?我正在考虑将我的struct configuration * config
设为全局变量,在main()
之前声明,并且在log.h中有extern struct configuration * config
,以便log.c可以使用它。但是大家总是说“全局变量不好,不要使用它们”,所以我想知道是否有更好的方法来做到这一点。日志记录功能的配置
2
A
回答
2
那么,全球配置需要是全球性的。所以,我会认为这是一个例外的规则。但是,在大多数情况下,您可能想要将struct
公开为const
。这将有助于缩小将来哪些模块正在改变全球状态。
要完成此操作,请使用公开const
指针而不是直接extern
的全局函数。实际上,您也可以将配置struct
声明为static
。这将进一步消除意外的访问。
0
如果这个日志记录配置在任何时候都会(并且总是会)适用于整个系统,那么这将是全局变量可以使用的少数几次之一,imho。
你应该考虑你是否需要整个配置结构全局,或只是日志配置值。
相关问题
- 1. Javascript日志记录功能
- 2. IIS日志记录功能
- 3. Python日志记录功能
- 4. omnet ++:配置日志记录
- 5. JBoss日志记录配置
- 6. Django - 日志记录配置
- 7. 基于日志记录级别的SpringBoot日志记录配置
- 8. Scrapy日志记录:配置日志重写日志文件
- 9. 如何配置JAR的日志记录
- 10. Mule的日志记录配置
- 11. 配置Teamcity的日志记录行为
- 12. 事件日志记录的log4net配置
- 13. 日志记录iphone功能使用
- 14. 玩!框架日志记录功能
- 15. 休眠4.x日志记录配置
- 16. 日志记录火花配置属性
- 17. Python日志记录配置文件
- 18. 如何配置OpenJPA SQL日志记录?
- 19. 在Glassfish配置公共日志记录
- 20. 如何配置Hibernate日志记录?
- 21. 使用Lift配置日志记录
- 22. 如何配置queue_classic日志记录
- 23. Python 3.4日志记录配置
- 24. 配置日志记录级别在python
- 25. 在dll中配置log4net日志记录
- 26. 烧瓶正确配置日志记录
- 27. Apache公共日志记录配置
- 28. GWT日志记录设置
- 29. 日志记录位置
- 30. 使用Log4j XML配置文件配置Hibernate日志记录?
我肯定会在我的config类的源文件中创建一个全局变量,并在头文件中声明extern(不是指向实例的指针,而是全局实例)。从来没有这个问题。由于您处于全局命名空间,因此您只需要给它一个足够独特的名称以避免冲突。 – RedX