嵌入式编程有时候真的很需要一个精小的log日志记录系统,主要是为了开发和调试使用。对于小型嵌入式系统来说,一般在发布运行时对日志系统的需求比较低。
微型log分为4个日志记录级别。低于设置的级别,相应的日志记录函数将会被宏定义为空白。
/***********************************************************************************************
_____________________________________杭州大仁科技有限公司_______________________________________
@文 件 名: ulog.h
@日 期: 2016.07.23
@作 者: 张诗星
@文件说明:
调试诊断库是一个包含ASSERT(断言)、LOG(日志记录)功能的程序模块。
可以使用调试诊断库来快速的定位程序BUG和记录日志。
ulog是一个基于宏的微型日志记录系统,
基于宏的实现,可以方便的打印出行号和文件名等信息
@修订说明:
2016.07.23 初始版本
2016.07.24 修改实现方式为宏定义实现,可无需要可变参数宏支持
2016.07.28 修改实现方式,修改为只适用宏来实现的方式
***********************************************************************************************/
#ifndef _U_LOG_H_
#define _U_LOG_H_
/*----------------------------------------头文件----------------------------------------------*/
#include
/*---------------------------------------用户配置---------------------------------------------*/
//log级别
#define LOG_CFG_LEVEL (G_TRACE)
//日志记录接口
#define LOG_PRINTF printf
/*-------------------------------------枚举类型定义-------------------------------------------*/
//日志记录级别
#define G_DEBUG (0) /* 信息用来显示详细的执行信息和步骤 */
#define G_TRACE (1) /* 用来跟踪特定的主要信息 */
#define G_WARING (2)
#define G_ERROR (3) /* 错误级别 */
#define G_NONE (4) /* 关闭LOG */
/*---------------------------------------接口定义---------------------------------------------*/
// 修改打印样式
#define _LOG_PT(aTOKE) \
LOG_PRINTF("\r\n<" aTOKE "> <%s><%d>\\ ", __FILE__, __LINE__); \
LOG_PRINTF
// DEBUG级别
#if LOG_CFG_LEVEL>G_DEBUG
#define LOG_DEBUG
#else
#define LOG_DEBUG _LOG_PT("DEBUG")
#endif /* #if LOG_CFG_LEVEL>G_DEBUG */
// TRACE级别
#if LOG_CFG_LEVEL>G_TRACE
#define LOG_TRACE
#else
#define LOG_TRACE _LOG_PT("TRACE")
#endif /* #if LOG_CFG_LEVEL>G_TRACE */
// WARING级别
#if LOG_CFG_LEVEL>G_WARING
#define LOG_WARING
#else
#define LOG_WARING _LOG_PT("WARNG")
#endif /* #if LOG_CFG_LEVEL>G_WARING */
// ERROR级别
#if LOG_CFG_LEVEL>G_ERROR
#define LOG_ERROR
#else
#define LOG_ERROR _LOG_PT("ERROR")
#endif /* #if LOG_CFG_LEVEL>G_ERROR */
#endif /* #ifndef _U_LOG_H_ */