首先,是几个判断当前运行状态的函数,shell,kernal,interrupt三种,如果这三种状态都不是,那就是应用程序。紧接着的,是z_Log2xxx函数,用来做最终输出的,包括console,file,memory等多个选项。然后是z_xxxLog/z_ShellPrintxxx函数,这个是封装前的几个打印函数,他们会调用前面的z_Log2xxx。再往下,是一组互斥量操作,内存日志支持函数,以及日志打印级别定义和操作。
对于一般使用者来说,这些都不需要理解,因为它们对用户是透明的。
输出级别定义后,是一些相对具体的日志输出接口,是些宏定义。这里有选择的讲一讲。
#define VERBOSE_LINE(fnPrint, level) fnPrint("[%s]:%s %s %d::", _STR(level), __FILE__, __FUNCTION__, __LINE__)
定义额外调试信息,我们不想总是去敲入__FUNCTION__,__LINE__,用这个宏定义来解决。