03
elog获取时间信息
返回当前时间,将会显示在日志中。
/**
* get current time interface
*
* @Return current time
*/
const char *elog_port_get_time(void)
{
/* add your code here */
memset(elog_time, 0, sizeof(elog_time));
sprintf(elog_time, "%d-%02d-%02d %02d:%02d:%02d",
RTC_Calendar.year, RTC_Calendar.month, RTC_Calendar.day,
RTC_Calendar.hour, RTC_Calendar.minute, RTC_Calendar.second);
return elog_time;
}
参数设置
配置时需要修改项目中的elog_cfg.h文件,开启、关闭、修改对应的宏即可。
可以配置内容参数有输出开关、输出级别、断言开关、每行日志缓冲大小、行号最大长度、过滤标签最大长度、过滤关键字最大长度、标签+级别过滤器的最大数目、换行符、颜色和异步输出模式等,具体的配置参数方式可以参考链接。
开启缓冲输出模式后,如果缓冲区不满,用户线程在进行日志输出时,无需等待日志彻底输出完成,即可直接返回。但当日志缓冲区满以后,将会占用用户线程,自动将缓冲区中的日志全部输出干净。同时用户也可以在非日志输出线程,通过定时等机制使用 void elog_flush(void) 将缓冲区中的日志输出干净。
操作方法:
开启、关闭ELOG_BUFF_OUTPUT_ENABLE宏即可
默认大小:
(ELOG_LINE_BUF_SIZE * 10) ,不定义此宏,将会自动按照默认值设置
操作方法:
修改ELOG_BUF_OUTPUT_BUF_SIZE宏对应值即可
/* EasyLogger flash log plugin's RAM buffer size */
#define ELOG_FLASH_BUF_SIZE 1024 /* @NOTE you must define it for a value */
测试验证
我们使用了芯片内部的RTC功能,在日志存储的时候记录了当前系统的日期和时间;结合EasyFlash我们将EasyLogger的日志记录存储到片内FLASH空间,这样在芯片重启后仍能查询到之前日志信息。同时我们将需要测试的函数注册到Shell命令中,通过调用Shell命令可以便捷的进行调试过程。
01
编写elog测试记录
/*******************************************************************************
* @brief
* @param
* @retval
* @Attention
*******************************************************************************/
void EasyLogger_SHELL_elog_test(void)
{
log_a("Hello EasyLogger!"); /* 断言Assert */
log_e("Hello EasyLogger!"); /* 错误Error */
log_w("Hello EasyLogger!"); /* 警告Warn */
log_i("Hello EasyLogger!"); /* 信息Info */
log_d("Hello EasyLogger!"); /* 调试Debug */
log_v("Hello EasyLogger!"); /* 详细Verbose */
}
SHELL_EXPORT_CMD(elog_test, EasyLogger_SHELL_elog_test, EasyLogger test);
02
编写elog操作Flash插件的函数
/*******************************************************************************
* @brief
* @param
* @retval
* @attention
*******************************************************************************/
void EasyLogger_SHELL_elog_flash(char *argv)
{
if(!strcmp(argv, "read"))
{
printf("\r\nelog_flash read \r\n"); elog_flash_output_all();
}
else if(!strcmp(argv, "clean"))
{
printf("\r\nelog_flash clean\r\n"); elog_flash_clean();
}
else if(!strcmp(argv, "flush"))
{
printf("\r\nelog_flash flush\r\n"); elog_flash_flush();
}
else
{
printf("\r\nelog_flash error\r\n");
}
}
SHELL_EXPORT_CMD(elog_flash, EasyLogger_SHELL_elog_flash, EasyLogger read/clean/flush flash log);
|