#fix 拦截器对level参数无效

This commit is contained in:
2024-11-21 15:39:50 +08:00
parent 915c18640a
commit 5c24b070bb
5 changed files with 27 additions and 17 deletions

View File

@@ -6,7 +6,7 @@ extern "C" {
#endif #endif
typedef enum { typedef enum {
LOG_FATAL, LOG_FATAL = 0,
LOG_ERROR, LOG_ERROR,
LOG_WARNING, LOG_WARNING,
LOG_INFO, LOG_INFO,

View File

@@ -18,7 +18,7 @@ typedef struct log_Interceptor {
log_Handler *handler; log_Handler *handler;
bool jump_out; bool jump_out;
bool (*_dispose)(struct log_Interceptor *Interceptor, bool (*_dispose)(struct log_Interceptor *Interceptor,
char *level, log_level level,
const char *message, const char *message,
...); ...);
void (*_free)(struct log_Interceptor *Interceptor); void (*_free)(struct log_Interceptor *Interceptor);

View File

@@ -24,8 +24,10 @@ static void get_next(char *str, int *next) {
} }
static bool kmp_search(char *substr, char *master) { static bool kmp_search(char *substr, char *master) {
if(substr == NULL)return true; //空串全匹配 if (substr == NULL)
if(master == NULL)return false; return true; // 空串全匹配
if (master == NULL)
return false;
int i = 0; int i = 0;
int j = 0; int j = 0;
int substrlen = strlen(substr); int substrlen = strlen(substr);
@@ -54,16 +56,19 @@ static bool kmp_search(char *substr, char *master) {
} }
static bool _disposeSubstring(log_Interceptor *interceptor, static bool _disposeSubstring(log_Interceptor *interceptor,
char *level, log_level level,
const char *message, const char *message,
...) { ...) {
int count = 0; int count = 0;
keywords_t *keyword = (keywords_t *)(interceptor + 1); keywords_t *keyword = (keywords_t *)(interceptor + 1);
if (keyword->key == NULL && keyword->next == NULL) if (keyword->key == NULL && keyword->next == NULL) {
if (level <= interceptor->level)
return true;
return false; return false;
}
while (keyword != NULL) { while (keyword != NULL && level <= interceptor->level) {
if (kmp_search(keyword->key, (char *)message)) if (kmp_search(keyword->key, (char *)message))
return true; return true;
keyword = keyword->next; keyword = keyword->next;

View File

@@ -1,4 +1,5 @@
#include "logging.h" #include "logging.h"
#include "logging/logging-core.h"
#include "logging/logging-handler.h" #include "logging/logging-handler.h"
#include "utils/logging-utils.h" #include "utils/logging-utils.h"
#include <stdbool.h> #include <stdbool.h>
@@ -92,7 +93,10 @@ static void output_to_handler(log_Handler *handler,
* @param ... 格式化参数列表 * @param ... 格式化参数列表
* @return * @return
*/ */
static void _builtin_cope(char *level, const char *color, const char *message) { static void _builtin_cope(log_level level_e,
char *level,
const char *color,
const char *message) {
if (G_LOGGER == NULL) { if (G_LOGGER == NULL) {
return; return;
} }
@@ -104,7 +108,7 @@ static void _builtin_cope(char *level, const char *color, const char *message) {
log_Handler *handler = G_LOGGER->handler; log_Handler *handler = G_LOGGER->handler;
while (it != NULL) { while (it != NULL) {
if (it->_dispose(it, level, message)) { if (it->_dispose(it, level_e, message)) {
output_to_handler(it->handler, level, color, message); output_to_handler(it->handler, level, color, message);
if (it->jump_out) if (it->jump_out)
return; return;
@@ -121,7 +125,7 @@ void log_fatal(const char *message, ...) {
va_start(args, message); va_start(args, message);
vsprintf(logStr, message, args); vsprintf(logStr, message, args);
va_end(args); va_end(args);
_builtin_cope("Fatal", RED_B, logStr); _builtin_cope(LOG_FATAL, "Fatal", RED_B, logStr);
} }
} }
@@ -132,7 +136,7 @@ void log_error(const char *message, ...) {
va_start(args, message); va_start(args, message);
vsprintf(logStr, message, args); vsprintf(logStr, message, args);
va_end(args); va_end(args);
_builtin_cope("Error", RED, logStr); _builtin_cope(LOG_ERROR, "Error", RED, logStr);
} }
} }
@@ -143,7 +147,7 @@ void log_warning(const char *message, ...) {
va_start(args, message); va_start(args, message);
vsprintf(logStr, message, args); vsprintf(logStr, message, args);
va_end(args); va_end(args);
_builtin_cope("Warning", YELLOW, logStr); _builtin_cope(LOG_WARNING, "Warning", YELLOW, logStr);
} }
} }
@@ -154,7 +158,7 @@ void log_info(const char *message, ...) {
va_start(args, message); va_start(args, message);
vsprintf(logStr, message, args); vsprintf(logStr, message, args);
va_end(args); va_end(args);
_builtin_cope("Info", GREEN, logStr); _builtin_cope(LOG_INFO, "Info", GREEN, logStr);
} }
} }
@@ -165,7 +169,7 @@ void log_debug(const char *message, ...) {
va_start(args, message); va_start(args, message);
vsprintf(logStr, message, args); vsprintf(logStr, message, args);
va_end(args); va_end(args);
_builtin_cope("Debug", CYAN, logStr); _builtin_cope(LOG_DEBUG, "Debug", CYAN, logStr);
} }
} }

View File

@@ -1,4 +1,5 @@
#include "logging.h" #include "logging.h"
#include "logging/logging-core.h"
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <time.h> #include <time.h>
@@ -12,7 +13,7 @@ int main() {
log_debug("This is a debug message"); log_debug("This is a debug message");
log_warning("This is a warning message%s", "123"); log_warning("This is a warning message%s", "123");
char *test1[] = {"This",NULL}; char *test1[] = {"This", NULL};
log_Interceptor *tint = loggingSubStringInterceptor( log_Interceptor *tint = loggingSubStringInterceptor(
test1, test1,
@@ -22,11 +23,11 @@ int main() {
logger->addInterceptor(tint); logger->addInterceptor(tint);
char *test2[] = {"123",NULL}; char *test2[] = {"123", NULL};
log_Interceptor *tint1 = loggingSubStringInterceptor( log_Interceptor *tint1 = loggingSubStringInterceptor(
test2, test2,
LOG_DEBUG, LOG_ERROR,
loggingFileHandler("test_interceptor1", 1024 * 1024), loggingFileHandler("test_interceptor1", 1024 * 1024),
true); true);