c – 记录库的意义和目的是什么?

我想了解日志库的基础知识.

>记录库的目的是什么?我知道一个日志基本上是在执行过程中你的应用程序进程的信息.一种方法是直接在文件中写入信息.
>为了记录目的,设计专用库(如glog)的目的是什么?
我对于日志记录的理解是否正确,还是需要更改?
有人可以给出一个实际的例子来展示使用日志记录库的重要性吗?
>在选择日志库时应该看看什么功能
>在实现过程中如何有效地采用日志记录?

解决方法

在执行应用程序期间记录信息可以帮助您了解导致错误或崩溃的原因,为您提供比简单的崩溃,调用堆栈甚至minidump报告更多的上下文.当您从不是开发人员的人身上获取错误或崩溃报告,并且没有在调试器下运行时,特别重要的是,您的团队中的最终用户/客户或非开发人员.

我的背景是在游戏中,由于几个原因,游戏记录可能是特别有价值的.一个是许多问题可以与系统上硬件的细节相关联,因此可以记录用户拥有的什么样的GPU,它们正在运行的图形驱动程序版本等信息,这对于调试只出现在具体配置.另一个原因是游戏有一个模拟方面,游戏的状态随着时间的推移而变化,以响应用户输入以及物理,AI和游戏规则等的仿真.了解在崩溃或错误的过程中发生的事情有助于弄清楚如何重现它,并且可以为问题的根本原因提供宝贵的线索.

日志记录库增加了对日志记录有用的功能,超出了一个简单的printf可用的功能.这包括以下内容

>根据诸如调试与发布版本以及运行时设置(如-verbose标志)等因素控制日志记录的能力.
>可以独立启用,禁用或设置为特定详细程度的“通道”的概念.例如,要调试图形问题,您可能希望将“图形”通道设置为最大冗长度,同时屏蔽“网络”和“音频”通道.
>灵活的后端,从日志记录到磁盘上的本地文件,通过网络记录到远程数据库.
>线程安全性,以便当从多个不同的线程同时记录时,日志记录的行为本身.
>使用时间戳记和任何其他相关信息(通道,详细程度等)自动标记日志条目.

至于如何使用日志库,这在某种程度上取决于你的应用程序,但这里有一些一般的建议:

>如果您的日志库提供它们(应该),请充分利用频道和详细程度.这将帮助您管理在应用程序增长时可以成为大量日志消息的内容.>如果您遇到意外但非致命的情况并处理它,请记录一些有关信息,以防以后导致意外问题.>在应用程序启动时,如果您收到客户的错误或崩溃报告,请记录任何可能会在稍后再现罕见错误的信息.错误的信息太多,你永远不知道什么可能是有用的提前.这可能包括cpu类型,GPU型号和驱动程序版本,可用内存,操作系统版本,可用硬盘空间等.>记录关键状态转换,以便您可以在调试问题时跟踪应用程序的状态及其到达的位置.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...