# log **Repository Path**: jhembed/log ## Basic Information - **Project Name**: log - **Description**: 简单易用的跨平台C/C++日志库,支持linux、windows、嵌入式rtos、以及嵌入式裸机. - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 6 - **Created**: 2022-10-11 - **Last Updated**: 2025-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简单易用的跨平台C/C++日志库,支持linux、windows、嵌入式rtos、以及嵌入式裸机 #### 介绍 - 跨平台C/C++日志库,支持linux、windows、嵌入式rtos、以及嵌入式裸机; - 支持终端颜色显示; - 自定义注册日志输出,由此可将日志信息输出到控制台、文件、以及其他设备,如在单片机中保存至FLASH。 #### 移植方法 - `log_timestamp`函数用来给日志提供时间显示,如果在单片机中不支持时间,那么该函数可直接返回空串""。 - `LOG_ENABLED`宏用于使能全局日志的使能 - 以下宏定义用于适配互斥访问: ```c #define hmutex_t void* #define hmutex_init(mutex) ((void)mutex) #define hmutex_destroy(mutex) ((void)mutex) #define hmutex_lock(mutex) ((void)mutex) #define hmutex_unlock(mutex) ((void)mutex) ``` #### 使用方法 ```c #include #include #include "log.h" int main() { int arg = 12345678; // 初始化 LOG_INIT(); // 注册控制台输出 LOG_SUBSCRIBE(log_console_output, LOG_TRACE_LEVEL); // 注册文件输出 LOG_SUBSCRIBE(log_file_output, LOG_TRACE_LEVEL); // LOG_SUBSCRIBE(log_console_logger, LOG_DEBUG_LEVEL); // LOG_SUBSCRIBE(log_console_logger, LOG_INFO_LEVEL); // LOG_SUBSCRIBE(log_console_logger, LOG_WARNING_LEVEL); // LOG_SUBSCRIBE(log_console_logger, LOG_ERROR_LEVEL); // LOG_SUBSCRIBE(log_console_logger, LOG_CRITICAL_LEVEL); LOG(LOG_INFO_LEVEL, "this is raw message ! \n"); LOGF("this is message, arg:%d !", arg); LOGE("this is message, arg:%d !", arg); LOGW("this is message, arg:%d !", arg); LOGI("this is message, arg:%d !", arg); LOGD("this is message, arg:%d !", arg); LOGT("this is message, arg:%d !", arg); return 0; } ``` #### 运行效果 输出到文件和控制台显示效果: ![](result.png)