C/C++——日志作用思考

一直以来,使用C++开发程序或项目的过程中,日志都见得非常少。以前用Java的时候,日志的重要性非常高,于是最近开始思考在C++中,日志的作用和必要性。

使用C++的场景不同,使用日志的功能也不同,如果是在仪器设备上,日志通常是以下场景:

1.设备程序在使用的时候崩溃

2.设备不按照设想的情景运行,当时的场景已经无法复现

3.设备需要记录一些必要运行的数据

这些场景具体处理办法如下:

1.对于崩溃问题,debug很难确定位置,所以这个问题上日志是必要的,可以通过在所有运行函数的进出口添加日志来确定崩溃位置

2.设备不按照设想情景运行,以及记录一些必要运行数据这一块具体情况也不太确定。

但是有个位置需要记录日志,就是代码中设备出现非正常情形,例如命令的参数不符合协议要求、设备状态不符合运行要求等,说白了就是代码中进行运行判断,然后不通过的日志。

以我目前对于设备软件的思考,就相当于有两个级别的日志:

①DEBUG:用于给开发者,也就是我自己看的日志,包括函数进出口日志

②INFO:设备运行的日志,目前仅有代码中判断不通过的日志

3.常用宏:

①__FILE__:显示当前宏所有文件的文件全路径

②__LINE__:显示当前宏所在行数

③__FUNCTION__:显示当前宏所在函数全称,如果是成员函数,包括类名

这样一来,其实只需要__FUNCTION__一个宏就可以实现函数的进出log。

仪器的日志特点:

1.数据量不大,一天1~10个G就很多了

2.存在多个子系统,需要分系统记录

3.能够按日期滚动记录在文件中

4.功能(例如开关)可不断线实时加载

5.小型化,尽可能的小

知乎有人推荐使用spdlog,但是因为公司有自身的log工具,所以不做考虑。

你可能感兴趣的:(c++)