修改了不合理设计
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,3 +2,4 @@
|
|||||||
.vscode/**
|
.vscode/**
|
||||||
bin
|
bin
|
||||||
build
|
build
|
||||||
|
CMakeUserPresets.json
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ cmake_minimum_required( VERSION 3.28)
|
|||||||
|
|
||||||
project(Logging)
|
project(Logging)
|
||||||
|
|
||||||
|
|
||||||
aux_source_directory(${CMAKE_SOURCE_DIR}/src SRC)
|
aux_source_directory(${CMAKE_SOURCE_DIR}/src SRC)
|
||||||
|
|
||||||
set(LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
|
set(LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
|
||||||
@@ -17,3 +18,6 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
add_executable(test_main ${CMAKE_SOURCE_DIR}/test_package/main.c ${SRC})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class loggingRecipe(ConanFile):
|
|||||||
def build(self):
|
def build(self):
|
||||||
cmake = CMake(self)
|
cmake = CMake(self)
|
||||||
cmake.configure()
|
cmake.configure()
|
||||||
cmake.build()
|
cmake.build(target="Logging")
|
||||||
|
|
||||||
def package(self):
|
def package(self):
|
||||||
copy(self, "LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"))
|
copy(self, "LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"))
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ typedef struct Logger
|
|||||||
void (*warning)(const char* format, ...);
|
void (*warning)(const char* format, ...);
|
||||||
void (*info)(const char* format, ...);
|
void (*info)(const char* format, ...);
|
||||||
void (*debug)(const char* format, ...);
|
void (*debug)(const char* format, ...);
|
||||||
|
|
||||||
|
void (*addHandler)(log_Handler* handler);
|
||||||
|
// void (*addFormat)(const char* format);
|
||||||
|
// void (*addFilter)(const char* filter);
|
||||||
} Logger;
|
} Logger;
|
||||||
|
|
||||||
|
|
||||||
@@ -46,15 +50,13 @@ typedef struct Logger
|
|||||||
typedef struct Logging {
|
typedef struct Logging {
|
||||||
Logger* (*getLogger)(const char* name, log_level level);
|
Logger* (*getLogger)(const char* name, log_level level);
|
||||||
log_status (*setLevel)(Logger* logger, log_level level);
|
log_status (*setLevel)(Logger* logger, log_level level);
|
||||||
// void (*addFormat)(const char* format);
|
|
||||||
// void (*addFilter)(const char* filter);
|
|
||||||
void (*addHandler)(log_Handler* handler);
|
|
||||||
} Logging;
|
} Logging;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Logging* createLogging();
|
Logging* createLogging(); //创建日志操作器
|
||||||
log_status destroyLogging(Logging* logging);
|
log_status destroyLogging(Logging* logging);
|
||||||
|
Logger* getCurrentLogger(void);
|
||||||
|
|
||||||
|
|
||||||
log_Handler* fileHandler(const char* name); //文件处理器
|
log_Handler* fileHandler(const char* name); //文件处理器
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
|
/********************************************
|
||||||
|
* @Date: 2024 08 12
|
||||||
|
* @Description: 日志处理器
|
||||||
|
********************************************/
|
||||||
#include "logging.h"
|
#include "logging.h"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
/********************************************
|
||||||
|
* @Date: 2024 08 12
|
||||||
|
* @Description: 日志模块
|
||||||
|
********************************************/
|
||||||
|
|
||||||
#include "logging.h"
|
#include "logging.h"
|
||||||
|
|
||||||
Logger* G_LOGGER = NULL;
|
Logger* G_LOGGER = NULL;
|
||||||
@@ -23,7 +28,9 @@ static void getTimeStr(char * timeStr){
|
|||||||
strcpy(timeStr, _timeStr);
|
strcpy(timeStr, _timeStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description : 添加日志处理器
|
||||||
|
*/
|
||||||
static void addHandler(log_Handler* handler){
|
static void addHandler(log_Handler* handler){
|
||||||
if (G_LOGGER == NULL){
|
if (G_LOGGER == NULL){
|
||||||
return;
|
return;
|
||||||
@@ -31,6 +38,9 @@ static void addHandler(log_Handler* handler){
|
|||||||
G_LOGGER->handler = handler;
|
G_LOGGER->handler = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description : 内置日志记录函数
|
||||||
|
*/
|
||||||
static void _builtin_log(char* level, const char *color, const char* format, ...){
|
static void _builtin_log(char* level, const char *color, const char* format, ...){
|
||||||
if (G_LOGGER == NULL){
|
if (G_LOGGER == NULL){
|
||||||
return;
|
return;
|
||||||
@@ -121,6 +131,8 @@ static Logger* getLogger(const char* name, log_level level){
|
|||||||
logger->info = info;
|
logger->info = info;
|
||||||
logger->debug = debug;
|
logger->debug = debug;
|
||||||
|
|
||||||
|
logger->addHandler = addHandler;
|
||||||
|
|
||||||
logger->level = level;
|
logger->level = level;
|
||||||
logger->handler = NULL;
|
logger->handler = NULL;
|
||||||
logger->name = name;
|
logger->name = name;
|
||||||
@@ -136,11 +148,12 @@ static Logger* getLogger(const char* name, log_level level){
|
|||||||
Logging* createLogging(){
|
Logging* createLogging(){
|
||||||
Logging* logging = (Logging*)malloc(sizeof(Logging));
|
Logging* logging = (Logging*)malloc(sizeof(Logging));
|
||||||
logging->getLogger = getLogger;
|
logging->getLogger = getLogger;
|
||||||
logging->addHandler = addHandler;
|
|
||||||
return logging;
|
return logging;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description :销毁日志对象
|
||||||
|
*/
|
||||||
log_status destroyLogging(Logging* logging){
|
log_status destroyLogging(Logging* logging){
|
||||||
if (logging == NULL){
|
if (logging == NULL){
|
||||||
return L_ERROR;
|
return L_ERROR;
|
||||||
@@ -156,3 +169,15 @@ log_status destroyLogging(Logging* logging){
|
|||||||
free(logging);
|
free(logging);
|
||||||
return L_OK;
|
return L_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description :获取当前日志操作对象
|
||||||
|
* @return 当前唯一的日志操作对象
|
||||||
|
*/
|
||||||
|
Logger* getCurrentLogger(void){
|
||||||
|
if (G_LOGGER == NULL){
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return G_LOGGER;
|
||||||
|
}
|
||||||
@@ -2,17 +2,20 @@
|
|||||||
|
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
// Your code goes here
|
|
||||||
Logging *log = createLogging();
|
Logging *log = createLogging();
|
||||||
Logger *logger = log->getLogger("testLogger",LOG_DEBUG);
|
Logger *logger = log->getLogger("testLogger",LOG_DEBUG);
|
||||||
// log->addHandler(consoleHandler("test"));
|
// logger->addHandler(fileHandler("test"));
|
||||||
log->addHandler(fileHandler("test"));
|
logger->addHandler(consoleHandler("test"));
|
||||||
|
|
||||||
logger->info("This is an info message");
|
logger->info("This is an info message");
|
||||||
logger->error("你好,这是一个错误消息%s", "123");
|
logger->error("你好,这是一个错误消息%s", "123");
|
||||||
logger->fatal("This is an fatal message");
|
logger->fatal("This is an fatal message");
|
||||||
logger->debug("This is a debug message");
|
logger->debug("This is a debug message");
|
||||||
logger->warning("This is a warning message%s", "123");
|
logger->warning("This is a warning message%s", "123");
|
||||||
|
|
||||||
|
Logger *logger1 = getCurrentLogger();
|
||||||
|
logger1->info("This is an info message from logger1");
|
||||||
|
|
||||||
destroyLogging(log);
|
destroyLogging(log);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user