* #feat 增强Fatal级别的底色,修改logging类的方法

* 更新版本号
This commit is contained in:
youmetme
2024-09-21 15:21:53 +08:00
committed by GitHub
parent 6765dd1214
commit 86cf4c4526
15 changed files with 84 additions and 73 deletions

View File

@@ -18,11 +18,8 @@ logging是一个轻量级的简单易用C语言日志库支持日志级别、
#include "logging.h"
int main() {
Logging *log = createLogging(); // 创建日志对象
Logger *logger = log->getLogger("testLogger",LOG_DEBUG); //获取日志控制器
logger->addHandler(consoleHandler("test")); //为日志对象添加控制台处理器
Logging *log = newLogging();
Logger *logger = log->getLogger("testLogger", LOG_DEBUG);
logger->info("This is an info message");
logger->error("你好,这是一个错误消息%s", "123");
@@ -30,7 +27,7 @@ int main() {
logger->debug("This is a debug message");
logger->warning("This is a warning message%s", "123");
destroyLogging(log);
log->destroyLogging(log);
return 0;
}
```
@@ -40,11 +37,10 @@ int main() {
#include "logging.h"
int main() {
// Your code goes here
Logging *log = createLogging();
Logging *log = newLogging();
Logger *logger = log->getLogger("testLogger",LOG_DEBUG);
logger->addHandler(consoleHandler("test")); //为日志对象添加文件处理器
logger->addHandler(loggingFileHandler("test")); //为日志对象添加文件处理器
logger->info("This is an info message");
logger->error("你好,这是一个错误消息%s", "123");
@@ -52,7 +48,7 @@ int main() {
logger->debug("This is a debug message");
logger->warning("This is a warning message%s", "123");
destroyLogging(log);
log->destroyLogging(log);
return 0;
}
```
@@ -67,12 +63,11 @@ int main() {
将拦截到的日志重定向到专属文件处理器中
```c
#include "logging.h"
#include <stdio.h>
int main() {
Logging *log = createLogging();
Logging *log = newLogging();
Logger *logger = log->getLogger("testLogger", LOG_DEBUG);
logger->addHandler(consoleHandler("test"));
logger->info("This is an info message");
logger->error("你好,这是一个错误消息%s", "123");
@@ -82,23 +77,27 @@ int main() {
char *test1[] = {"123", "你好"}; // 要拦截的字符串
// 添加拦截器,将拦截到的日志重定向到拦截器的专属处理器中
log_Interceptor * tint = substringInterceptor(test1,2,LOG_DEBUG,fileHandler("被拦截"));
log_Interceptor *tint =
loggingSubStringInterceptor(test1, 2, LOG_DEBUG, loggingFileHandler("被拦截"));
logger->addInterceptor(tint);
printf("\n");
printf("Interceptor added\n");
printf("\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);
log->destroyLogging(log);
return 0;
}
```
![](docs/img/![](2024-08-13-22-20-18.png).png)
![](docs/img/2024-08-13-22-21-37.png)
![](docs/img/2024-09-21-11-44-25.png)
![](docs/img/2024-09-21-11-44-06.png)
# build

View File

@@ -8,7 +8,7 @@ import os
class loggingRecipe(ConanFile):
name = "logging"
version = "0.2.2"
version = "0.2.3"
license = "MIT"
author = "321640253@qq.com"
url = "https://github.com/WangZhongDian/logging.git"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -28,10 +28,10 @@ typedef struct Logger {
typedef struct Logging {
Logger *(*getLogger)(const char *name, log_level level);
log_status (*setLevel)(Logger *logger, log_level level);
Logger *(*getCurrentLogger)(void);
log_status (*destroyLogging)(struct Logging *logging);
} Logging;
Logging *createLogging(); // 创建日志类对象
log_status destroyLogging(Logging *logging); // 销毁日志类对象
Logger *getCurrentLogger(void); // 获取当前日志记录器
Logging *newLogging(); // 创建日志类对象
#endif // __LOGGING_H__

View File

@@ -11,7 +11,7 @@ typedef struct log_Handler {
} log_Handler;
log_Handler* fileHandler(const char* name);
log_Handler* consoleHandler();
log_Handler* loggingFileHandler(const char* name);
log_Handler* loggingConsoleHandler();
#endif //__LOGGING_HANDLER_H__

View File

@@ -12,7 +12,7 @@ typedef struct log_Interceptor {
} log_Interceptor;
log_Interceptor *substringInterceptor(char *keywords[],
log_Interceptor *loggingSubStringInterceptor(char *keywords[],
int count,
log_level level,
log_Handler *handler);

View File

@@ -23,9 +23,8 @@ static void outputConsoleHandler(log_Handler *handler, const char *message) {
/**
* @brief :控制台日志处理器
* @param
*/
log_Handler *consoleHandler() {
log_Handler *loggingConsoleHandler() {
log_Handler *handler = (log_Handler *)malloc(sizeof(log_Handler));
handler->stream = stdout;

View File

@@ -8,8 +8,6 @@
/**
* @brief 文件日志处理器释放组件
* @param
* @return
*/
static void __freeFileHandler(log_Handler *handler) {
fclose(handler->stream);
@@ -18,8 +16,8 @@ static void __freeFileHandler(log_Handler *handler) {
/**
* @brief 文件日志处理器输出组件
* @param
* @return
* @param handler 文件日志处理器
* @param message 消息
*/
static void outputFileHandler(log_Handler *handler, const char *message) {
fputs(message, handler->stream);
@@ -27,10 +25,10 @@ static void outputFileHandler(log_Handler *handler, const char *message) {
/**
* @brief 文件日志处理器
* @param
* @return
* @param name 文件名
* @return log_Handler *
*/
log_Handler *fileHandler(const char *name) {
log_Handler *loggingFileHandler(const char *name) {
char new_file_name[100];
sprintf(new_file_name, "%s.log", name);

View File

@@ -1,6 +1,6 @@
/********************************************
* @Date: 2024 08 12
* @Description: 日志拦截器
* @Description: 子串拦截器
*********************************************/
#include "logging/logging-interceptor.h"
@@ -98,7 +98,7 @@ static void _freeSubstring(log_Interceptor *interceptor) {
/**
* @description : 子字符串拦截器
*/
log_Interceptor *substringInterceptor(char *keywords[],
log_Interceptor *loggingSubStringInterceptor(char *keywords[],
int count,
log_level level,
log_Handler *handler) {

View File

@@ -2,7 +2,6 @@
* @Date: 2024 08 12
* @Description: 日志模块
********************************************/
#include "logging.h"
#include "logging/logging-handler.h"
#include <stdio.h>
@@ -10,9 +9,8 @@
#include <string.h>
#include <time.h>
Logger *G_LOGGER = NULL;
#define RED "\033[0;31m"
#define RED_B "\033[0;41m"
#define GREEN "\033[0;32m"
#define YELLOW "\033[0;33m"
#define BLUE "\033[0;34m"
@@ -24,6 +22,8 @@ Logger *G_LOGGER = NULL;
#define LOG_BUFFER_SIZE 1024
Logger *G_LOGGER = NULL;
static void getTimeStr(char *timeStr) {
time_t t = time(NULL);
struct tm *p = localtime(&t);
@@ -96,10 +96,17 @@ _builtin_log(char *level, const char *color, const char *message, ...) {
// 判断处理器是否应用颜色
if (handler->apply_color)
sprintf(
logStr, "%s %s%s%s %s\n", timeStr, color, level, RESET, message);
sprintf(logStr,
"%s: %s %s%s%s %s\n",
G_LOGGER->name,
timeStr,
color,
level,
RESET,
message);
else
sprintf(logStr, "%s %s %s\n", timeStr, level, message);
sprintf(
logStr, "%s: %s %s %s\n", G_LOGGER->name, timeStr, level, message);
handler->output(handler, logStr);
}
@@ -112,7 +119,7 @@ static void fatal(const char *message, ...) {
va_start(args, message);
vsprintf(logStr, message, args);
va_end(args);
_builtin_log("Fatal", RED, logStr, args);
_builtin_log("Fatal", RED_B, logStr, args);
}
}
@@ -168,10 +175,13 @@ static void debug(const char *message, ...) {
*/
static Logger *getLogger(const char *name, log_level level) {
if (G_LOGGER != NULL) {
G_LOGGER->name = name;
G_LOGGER->level = level;
return G_LOGGER;
}
Logger *logger = (Logger *)malloc(sizeof(Logger));
// 方法
logger->fatal = fatal;
logger->error = error;
logger->warning = warning;
@@ -181,8 +191,9 @@ static Logger *getLogger(const char *name, log_level level) {
logger->addHandler = addHandler;
logger->addInterceptor = addInterceptor;
// 属性
logger->level = level;
logger->handler = consoleHandler(name);
logger->handler = loggingConsoleHandler();
logger->name = name;
logger->interceptor = NULL;
@@ -190,16 +201,6 @@ static Logger *getLogger(const char *name, log_level level) {
return G_LOGGER;
}
/**
* @description :创建一个日志对象
* @return :Logging* 返回一个日志对象
*/
Logging *createLogging() {
Logging *logging = (Logging *)malloc(sizeof(Logging));
logging->getLogger = getLogger;
return logging;
}
/**
* @description :销毁日志对象
*/
@@ -233,3 +234,15 @@ Logger *getCurrentLogger(void) {
}
return G_LOGGER;
}
/**
* @description :创建一个日志对象
* @return :Logging* 返回一个日志对象
*/
Logging *newLogging() {
Logging *logging = (Logging *)malloc(sizeof(Logging));
logging->getLogger = getLogger;
logging->destroyLogging = destroyLogging;
logging->getCurrentLogger = getCurrentLogger;
return logging;
}

View File

@@ -2,7 +2,7 @@
#include <stdio.h>
int main() {
Logging *log = createLogging();
Logging *log = newLogging();
Logger *logger = log->getLogger("testLogger", LOG_DEBUG);
logger->info("This is an info message");
@@ -14,9 +14,13 @@ int main() {
char *test1[] = {"123", "你好"}; // 要拦截的字符串
// 添加拦截器,将拦截到的日志重定向到拦截器的专属处理器中
log_Interceptor *tint =
substringInterceptor(test1, 2, LOG_DEBUG, fileHandler("被拦截"));
loggingSubStringInterceptor(test1, 2, LOG_DEBUG, loggingFileHandler("被拦截"));
logger->addInterceptor(tint);
printf("\n");
printf("Interceptor added\n");
printf("\n");
logger->info("This is an info message");
logger->error("你好,这是一个错误消息%s", "123");
@@ -24,6 +28,6 @@ int main() {
logger->debug("This is a debug message");
logger->warning("This is a warning message%s", "123");
destroyLogging(log);
log->destroyLogging(log);
return 0;
}

View File

@@ -1,8 +1,7 @@
#include "logging.h"
int main() {
Logging *log = createLogging();
Logging *log = newLogging();
Logger *logger = log->getLogger("testLogger", LOG_DEBUG);
logger->info("This is an info message");
@@ -11,7 +10,6 @@ int main() {
logger->debug("This is a debug message");
logger->warning("This is a warning message%s", "123");
destroyLogging(log);
log->destroyLogging(log);
return 0;
}