软件日志

在一个健全的软件中,日志系统是必不可少的,因为软件发布到各个地方你并不总是有条件去下断点然后去调试。而且如果你的软件中大量使用多线程,那么即使你有条件断点恐怕也是无济与事,因此最古老也是最有效的方法就是为软件实现一个健全的日志模块。

但是日志过多是会影响效率的,日志过少出问题时又难以用于分析。因此我们可以为日志分级。日志模块可以导出接口如下:


int log_init(void);
int log_set_level(int level);
int log_add(int level, const char *format, ...);
int log_free(void);

日志分为0, 1, 2级.
0级log只打印出导致函数执行失败情况下的信息.
1级log除了打印0级log外还要打印出关键函数内部的执行情况及其他对于软件整体运行至关重要的执行信息.
2级log除了包括0级和1级log之后要打印出每个函数的参数及最终执行结果.

日志级别写入软件的配置文件中, 而不要在程序中使用log_set_level写入一个固定值, 那么当发布给客户时默认级别为0级, 如果用户使用过程中碰到我们未发现的异常, 我们可以根据情况, 修改配置文件中的日志级别, 当现象再次重现时, 我们就可以从日志上得到足够的信息来Debug.

当然这跟断点调试还是有很大差距的, 所以平时写代码不能过度依赖调试器, 有时候也要练习一下人脑debug, 这也要求我们在写代码时一定要考虑全面思维严谨.



评论

  1. […] 而且log都分级的. 为了不影响量产使用时程序的执行效率, 我改写了log模块, 为log分级, […]

发表评论