From 2608dfa07881c4d6831ca729f223b3901a9bdbd0 Mon Sep 17 00:00:00 2001 From: youmetme <321640253@qq.com> Date: Tue, 13 Aug 2024 22:23:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=8B=A6=E6=88=AA=E5=99=A8?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 3 +- README.md | 45 ++++++++- conanfile.py | 2 +- docs/img/![](2024-08-13-22-20-18.png).png | Bin 0 -> 64623 bytes docs/img/2024-08-13-22-21-37.png | Bin 0 -> 44381 bytes include/logging.h | 29 +++++- src/logging-handler.c | 13 +++ src/logging-interceptor.c | 114 ++++++++++++++++++++++ src/logging.c | 90 +++++++++++++---- test_package/test_interceptor.c | 30 ++++++ test_package/{main.c => test_simple.c} | 4 - 11 files changed, 298 insertions(+), 32 deletions(-) create mode 100644 docs/img/![](2024-08-13-22-20-18.png).png create mode 100644 docs/img/2024-08-13-22-21-37.png create mode 100644 src/logging-interceptor.c create mode 100644 test_package/test_interceptor.c rename test_package/{main.c => test_simple.c} (76%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f7be31..e85e264 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ endif() if (SKIPTEST) else() -add_executable(test_main ${CMAKE_SOURCE_DIR}/test_package/main.c ${SRC}) + add_executable(test_simple ${CMAKE_SOURCE_DIR}/test_package/test_simple.c ${SRC}) + add_executable(test_interceptor ${CMAKE_SOURCE_DIR}/test_package/test_interceptor.c ${SRC}) endif() diff --git a/README.md b/README.md index dc2c831..22ec38e 100644 --- a/README.md +++ b/README.md @@ -55,4 +55,47 @@ int main() { destroyLogging(log); return 0; } -``` \ No newline at end of file +``` + +### 日志拦截器 +> 支持添加自定义的拦截器, 目前内置了子串拦截器 + +> 拦截器的作用:可以将拦截到的日志重定向到拦截器的专属处理器中 + + +#### 例子 +将拦截到的日志重定向到专属文件处理器中 +```c +#include "logging.h" + + +int main() { + Logging *log = createLogging(); + Logger *logger = log->getLogger("testLogger",LOG_DEBUG); + logger->addHandler(consoleHandler("test")); + + logger->info("This is an info message"); + logger->error("你好,这是一个错误消息%s", "123"); + logger->fatal("This is an fatal message"); + logger->debug("This is a debug message"); + logger->warning("This is a warning message%s", "123"); + + char *test1[] = {"123", "你好"};//要拦截的字符串 + //添加拦截器,将拦截到的日志重定向到拦截器的专属处理器中 + log_Interceptor * tint = substringInterceptor(test1,2,LOG_DEBUG,fileHandler("被拦截")); + logger->addInterceptor(tint); + printf("Interceptor added\n"); + + logger->info("This is an info message"); + logger->error("你好,这是一个错误消息%s", "123"); + logger->fatal("This is an fatal message"); + + logger->debug("This is a debug message"); + logger->warning("This is a warning message%s", "123"); + + destroyLogging(log); + return 0; +} +``` +![](docs/img/![](2024-08-13-22-20-18.png).png) +![](docs/img/2024-08-13-22-21-37.png) diff --git a/conanfile.py b/conanfile.py index d9d1e53..298effa 100644 --- a/conanfile.py +++ b/conanfile.py @@ -9,7 +9,7 @@ import os class loggingRecipe(ConanFile): name = "logging" - version = "0.1.0" + version = "0.1.1" license = "MIT" author = "321640253@qq.com" url = "https://github.com/WangZhongDian/logging.git" diff --git a/docs/img/![](2024-08-13-22-20-18.png).png b/docs/img/![](2024-08-13-22-20-18.png).png new file mode 100644 index 0000000000000000000000000000000000000000..a981785822d69eabfcfd2f2e9fc06cf1dcb21d49 GIT binary patch literal 64623 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 literal 0 HcmV?d00001 diff --git a/docs/img/2024-08-13-22-21-37.png b/docs/img/2024-08-13-22-21-37.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c816e0ba9d60ebce32b0cb27fe6ec932917543 GIT binary patch literal 44381 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 NQC97JrL<|_{{nW=A-n(p literal 0 HcmV?d00001 diff --git a/include/logging.h b/include/logging.h index 8cb29e5..f10ab5a 100644 --- a/include/logging.h +++ b/include/logging.h @@ -22,17 +22,29 @@ typedef enum { L_OK, } log_status; -typedef struct Handler { +typedef struct log_Handler { void* out; bool apply_color; + bool need_free; //是否有资源释放需求 + void (*_free)(struct log_Handler* handler);//释放资源 } log_Handler; +typedef struct log_Interceptor { + log_level level; //拦截级别 + log_Handler* handler; //拦截目标处理器 + bool need_free; //是否有资源释放需求 + bool (*_dispose)(char* level,const char *message, ...); //拦截触发器 + void (*_free)(struct log_Interceptor* Interceptor); //释放资源 +} log_Interceptor; + + //日志操作器 typedef struct Logger { log_level level; log_Handler* handler; + log_Interceptor* interceptor; const char* name; void (*fatal)(const char* format, ...); void (*error)(const char* format, ...); @@ -43,6 +55,7 @@ typedef struct Logger void (*addHandler)(log_Handler* handler); // void (*addFormat)(const char* format); // void (*addFilter)(const char* filter); + void (*addInterceptor)(log_Interceptor* Interceptor); } Logger; @@ -54,13 +67,21 @@ typedef struct Logging { -Logging* createLogging(); //创建日志操作器 +Logging* createLogging(); log_status destroyLogging(Logging* logging); Logger* getCurrentLogger(void); -log_Handler* fileHandler(const char* name); //文件处理器 -log_Handler* consoleHandler(const char* name); //控制台处理器 +/** + * @def 创建日志处理器 + * @file logging-handler.c +*/ +log_Handler* fileHandler(const char* name); +log_Handler* consoleHandler(const char* name); + + + +log_Interceptor* substringInterceptor(char *keywords[], int count, log_level level, log_Handler* handler); #endif // __LOGGING_H \ No newline at end of file diff --git a/src/logging-handler.c b/src/logging-handler.c index 711d3ae..a9d9570 100644 --- a/src/logging-handler.c +++ b/src/logging-handler.c @@ -5,6 +5,15 @@ #include "logging.h" +/** +* @description :释放文件日志处理器相关资源 +* @param +* @return +*/ +static void __freeFileHandler(log_Handler* handler){ + fclose(handler->out); +} + /** * @description :文件日志处理器 * @param @@ -17,6 +26,8 @@ log_Handler* fileHandler(const char* name){ log_Handler* handler = (log_Handler*)malloc(sizeof(log_Handler)); handler->out = fp; handler->apply_color = false; + handler->need_free = true; + handler->_free = __freeFileHandler; return handler; } @@ -30,5 +41,7 @@ log_Handler* consoleHandler(const char* name){ log_Handler* handler = (log_Handler*)malloc(sizeof(log_Handler)); handler->out = stdout; handler->apply_color = true; + handler->need_free = false; + handler->_free = NULL; return handler; } \ No newline at end of file diff --git a/src/logging-interceptor.c b/src/logging-interceptor.c new file mode 100644 index 0000000..19758ff --- /dev/null +++ b/src/logging-interceptor.c @@ -0,0 +1,114 @@ +/******************************************** +* @Date: 2024 08 12 +* @Description: 日志拦截器 +*********************************************/ + +#include "logging.h" + +static log_Interceptor* G_interceptor = NULL; + +static char **G_keywords = NULL; + +void get_next(char *str, int *next) { + next[1] = 0; + int i=1; + int j=0; + while (i < strlen(str)) { + if (j==0|| str[i] == str[j]) { + next[++i] = ++j; + } + else { + j = next[j]; + } + } +} + + +bool kmp_search(char *substr, char *master) { + int i = 0; + int j = 0; + int substrlen = strlen(substr); + int masterlen = strlen(master); + int *next = (int *)malloc(sizeof(int) * substrlen + 1); + get_next(substr, next); + + while (i < masterlen && j < substrlen) { + if (master[i] == substr[j]) { + i++; + j++; + } else { + if(j == 0) { + i++; + } else { + j = next[j]; + } + } + } + + free(next); + if (j == substrlen)return true; + else return false; +} + + +static bool _disposeSubstring(char* level,const char *message, ...){ + int count = 0; + + if (G_keywords == NULL) { + return false; + } + + while (G_keywords[count] != NULL) + { + if (kmp_search(G_keywords[count],(char*)message)) { + if(G_interceptor->handler != NULL) { + + } + return true; + } + count++; + } + + return false; +} + +/** +* @description : 释放内存 +*/ +static void _freeSubstring(log_Interceptor* interceptor) { + int sum = 0; + while (G_keywords[sum] != NULL) { + free(G_keywords[sum]); + sum++; + } + free(G_keywords); + G_keywords = NULL; + + free(interceptor); +} + +/** +* @description : 子字符串拦截器 +*/ +log_Interceptor* substringInterceptor(char *keywords[], int count, log_level level, log_Handler* handler) { + log_Interceptor* interceptor = (log_Interceptor*)malloc(sizeof(log_Interceptor)); + interceptor->_dispose = _disposeSubstring; + interceptor->need_free = true; + interceptor->handler = handler; + interceptor->level = level; + interceptor->_free = _freeSubstring; + + G_keywords = (char**)malloc( (sizeof(G_keywords)*count) + 1); + + for (int i = 0; i < count; i++) { + G_keywords[i] = (char*)malloc(strlen(keywords[i])+1); + strcpy(G_keywords[i], keywords[i]); + } + G_keywords[count] = NULL; + + G_interceptor = interceptor; + return G_interceptor; +} + + + diff --git a/src/logging.c b/src/logging.c index 672bb5c..5442907 100644 --- a/src/logging.c +++ b/src/logging.c @@ -35,13 +35,38 @@ static void addHandler(log_Handler* handler){ if (G_LOGGER == NULL){ return; } + if (G_LOGGER->handler == NULL){ + G_LOGGER->handler = handler; + return; + } + + if(G_LOGGER->handler->need_free){ + G_LOGGER->handler->_free(G_LOGGER->handler); + } + free(G_LOGGER->handler); G_LOGGER->handler = handler; } +void addInterceptor(log_Interceptor* Interceptor){ + if (G_LOGGER == NULL){ + return; + } + if (G_LOGGER->interceptor == NULL){ + G_LOGGER->interceptor = Interceptor; + return; + } + + if(G_LOGGER->interceptor->need_free){ + G_LOGGER->interceptor->_free(G_LOGGER->interceptor); + } + free(G_LOGGER->interceptor); + G_LOGGER->interceptor = Interceptor; +} + /** * @description : 内置日志记录函数 */ -static void _builtin_log(char* level, const char *color, const char* format, ...){ +static void _builtin_log(char* level, const char *color, const char* message, ...){ if (G_LOGGER == NULL){ return; } @@ -51,63 +76,77 @@ static void _builtin_log(char* level, const char *color, const char* format, ... char timeStr[20]; getTimeStr(timeStr); char logStr[LOG_BUFFER_SIZE]; - if (G_LOGGER->handler->apply_color) sprintf(logStr, "%s %s%s%s %s\n", timeStr, color,level,RESET, format); - else sprintf(logStr, "%s %s %s\n", timeStr, level, format); - fputs(logStr, G_LOGGER->handler->out); + + log_Handler * handler = G_LOGGER->handler; + + //通过拦截器 + if (G_LOGGER->interceptor != NULL){ + if(G_LOGGER->interceptor->_dispose(level,message)){ + if(G_LOGGER->interceptor->handler != NULL){ + handler = G_LOGGER->interceptor->handler; + } + } + } + + //判断处理器是否应用颜色 + if (handler->apply_color) sprintf(logStr, "%s %s%s%s %s\n", timeStr, color,level,RESET, message); + else sprintf(logStr, "%s %s %s\n", timeStr, level, message); + + fputs(logStr, handler->out); } //*************************记录日志******************************* */ -static void fatal(const char* format, ...){ +static void fatal(const char* message, ...){ if (G_LOGGER->level >= LOG_ERROR){ char logStr[LOG_BUFFER_SIZE]; va_list args; - va_start(args, format); - vsprintf(logStr, format, args); + va_start(args, message); + vsprintf(logStr, message, args); va_end(args); _builtin_log("Fatal",RED, logStr, args); } } -static void error(const char* format, ...){ +static void error(const char* message, ...){ if (G_LOGGER->level >= LOG_ERROR){ char logStr[LOG_BUFFER_SIZE]; va_list args; - va_start(args, format); - vsprintf(logStr, format, args); + va_start(args, message); + vsprintf(logStr, message, args); va_end(args); _builtin_log("Error",RED, logStr, args); } } -static void warning(const char* format, ...){ +static void warning(const char* message, ...){ if (G_LOGGER->level >= LOG_WARNING){ char logStr[LOG_BUFFER_SIZE]; va_list args; - va_start(args, format); - vsprintf(logStr, format, args); + va_start(args, message); + vsprintf(logStr, message, args); va_end(args); _builtin_log("Warning",YELLOW, logStr, args); } } -static void info(const char* format, ...){ +static void info(const char* message, ...){ if (G_LOGGER->level >= LOG_INFO){ char logStr[LOG_BUFFER_SIZE]; va_list args; - va_start(args, format); - vsprintf(logStr, format, args); + va_start(args, message); + vsprintf(logStr, message, args); va_end(args); _builtin_log("Info",GREEN, logStr, args); } } -static void debug(const char* format, ...){ +static void debug(const char* message, ...){ if (G_LOGGER->level >= LOG_DEBUG){ char logStr[LOG_BUFFER_SIZE]; va_list args; - va_start(args, format); - vsprintf(logStr, format, args); + va_start(args, message); + vsprintf(logStr, message, args); va_end(args); _builtin_log("Debug",CYAN, logStr, args); } @@ -132,10 +171,12 @@ static Logger* getLogger(const char* name, log_level level){ logger->debug = debug; logger->addHandler = addHandler; + logger->addInterceptor = addInterceptor; logger->level = level; logger->handler = NULL; logger->name = name; + logger->interceptor = NULL; G_LOGGER = logger; return G_LOGGER; @@ -160,9 +201,14 @@ log_status destroyLogging(Logging* logging){ } if (G_LOGGER != NULL){ if (G_LOGGER->handler != NULL){ - fclose(G_LOGGER->handler->out); + if(G_LOGGER->handler->need_free)G_LOGGER->handler->_free(G_LOGGER->handler); free(G_LOGGER->handler); } + + if (G_LOGGER->interceptor != NULL){ + if(G_LOGGER->interceptor->need_free)G_LOGGER->interceptor->_free(G_LOGGER->interceptor); + } + free(G_LOGGER); G_LOGGER = NULL; } @@ -180,4 +226,6 @@ Logger* getCurrentLogger(void){ return NULL; } return G_LOGGER; -} \ No newline at end of file +} + + diff --git a/test_package/test_interceptor.c b/test_package/test_interceptor.c new file mode 100644 index 0000000..7261f6f --- /dev/null +++ b/test_package/test_interceptor.c @@ -0,0 +1,30 @@ +#include "logging.h" + + +int main() { + Logging *log = createLogging(); + Logger *logger = log->getLogger("testLogger",LOG_DEBUG); + logger->addHandler(consoleHandler("test")); + + logger->info("This is an info message"); + logger->error("你好,这是一个错误消息%s", "123"); + logger->fatal("This is an fatal message"); + logger->debug("This is a debug message"); + logger->warning("This is a warning message%s", "123"); + + char *test1[] = {"123", "你好"};//要拦截的字符串 + //添加拦截器,将拦截到的日志重定向到拦截器的专属处理器中 + log_Interceptor * tint = substringInterceptor(test1,2,LOG_DEBUG,fileHandler("被拦截")); + logger->addInterceptor(tint); + printf("Interceptor added\n"); + + logger->info("This is an info message"); + logger->error("你好,这是一个错误消息%s", "123"); + logger->fatal("This is an fatal message"); + + logger->debug("This is a debug message"); + logger->warning("This is a warning message%s", "123"); + + destroyLogging(log); + return 0; +} \ No newline at end of file diff --git a/test_package/main.c b/test_package/test_simple.c similarity index 76% rename from test_package/main.c rename to test_package/test_simple.c index 97dd020..9d5aaf7 100644 --- a/test_package/main.c +++ b/test_package/test_simple.c @@ -4,7 +4,6 @@ int main() { Logging *log = createLogging(); Logger *logger = log->getLogger("testLogger",LOG_DEBUG); - // logger->addHandler(fileHandler("test")); logger->addHandler(consoleHandler("test")); logger->info("This is an info message"); @@ -13,9 +12,6 @@ int main() { logger->debug("This is a debug message"); logger->warning("This is a warning message%s", "123"); - Logger *logger1 = getCurrentLogger(); - logger1->info("This is an info message from logger1"); - destroyLogging(log); return 0; } \ No newline at end of file