EasyLogger
← 返回 模块总览 | ← 返回 配置学习 | ← 返回 debug方法 | ← 主页
GitHub网址下载Easylogger源代码
keil配置
-
我放到
库中车马多如簇\EasyLogger-master\easylogger里了
直接复制到你要添加的工程里就行
-
keil编译包含:
并且包含头文件
代码部分:
-
03_middlewares\communication\EasyLogger\port\elog_port.c里的elog_port_output函数内部内容添加一下,SEGGER_RTT_Write(0,log,size);如果是printf重定向过的uart:
printf("%.*s",size,log); -
这里我对源文件做出了如下修改(toolchains里的已经改好了):关闭
EasyLogger\inc\elog_cfg.h里68行异步输出的宏定义,还有79行的缓冲输出,49行”\r\n” -
如果使用 RTT + EasyLogger,还需关闭
EasyLogger\inc\elog_cfg.h第52行色彩输出的宏定义ELOG_COLOR_ENABLE(RTT 不支持 ANSI 转义序列,开了会崩溃闪退) -
EasyLogger\port\elog_port.c的90行elog_port_get_time函数:static char time_buf[16]; uint32_t tick = HAL_GetTick();//注意依托HAL库 uint32_t ms = tick % 1000U; uint32_t sec = (tick / 1000U) % 60U; uint32_t min = (tick / 60000U) % 60U; uint32_t hour = (tick / 3600000U) % 100U; snprintf(time_buf, sizeof(time_buf), "%02lu:%02lu:%02lu.%03lu", (unsigned long) hour, (unsigned long) min, (unsigned long) sec, (unsigned long) ms); return time_buf; -
创建Debug.c把下面的复制进去(库中我已经创建了可以直接复制)
#include "Debug.h" #include "elog.h" #include "stdio.h" void app_elog_init(void){ elog_init(); // elog_set_fmt(level, fmt_flags) // level: ELOG_LVL_ASSERT > ERROR > WARN > INFO > DEBUG > VERBOSE // fmt_flags 按位或: // ELOG_FMT_TIME — 时间 // ELOG_FMT_LVL — 日志级别 // ELOG_FMT_TAG — 标签 // ELOG_FMT_DIR — 文件路径 // ELOG_FMT_LINE — 行号 // ELOG_FMT_FUNC — 函数名 elog_set_fmt(ELOG_LVL_ASSERT, ELOG_FMT_TIME | ELOG_FMT_LVL | ELOG_FMT_TAG | ELOG_FMT_DIR | ELOG_FMT_LINE | ELOG_FMT_FUNC); elog_set_fmt(ELOG_LVL_DEBUG, ELOG_FMT_TIME | ELOG_FMT_LVL | ELOG_FMT_TAG | ELOG_FMT_DIR | ELOG_FMT_LINE | ELOG_FMT_FUNC); elog_set_fmt(ELOG_LVL_ERROR, ELOG_FMT_TIME | ELOG_FMT_LVL | ELOG_FMT_TAG | ELOG_FMT_DIR | ELOG_FMT_LINE | ELOG_FMT_FUNC); elog_set_fmt(ELOG_LVL_WARN, ELOG_FMT_TIME | ELOG_FMT_LVL | ELOG_FMT_TAG | ELOG_FMT_DIR | ELOG_FMT_LINE | ELOG_FMT_FUNC); elog_set_fmt(ELOG_LVL_INFO, ELOG_FMT_TIME | ELOG_FMT_LVL | ELOG_FMT_TAG | ELOG_FMT_DIR | ELOG_FMT_LINE | ELOG_FMT_FUNC); elog_start(); } -
创建
Debug.h(库中我已经创建了可以直接复制)/* Define to prevent recursive inclusion---------*/ #ifndef __DEBUG_H #define __DEBUG_H void app_elog_init(void); #endif /*DEBUG_H*/ -
使用:
/* USER CODE BEGIN 2 */ app_elog_init(); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ log_a("Hello EasyLogger!"); log_e("Hello EasyLogger!"); log_w("Hello EasyLogger!"); log_i("Hello EasyLogger!"); log_d("Hello EasyLogger!"); log_v("Hello EasyLogger!"); }