1.1.0-dev #6
							
								
								
									
										12
									
								
								README.en.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.en.md
									
									
									
									
									
								
							@@ -38,7 +38,7 @@ int main() {
 | 
			
		||||
    Log_debug("This is a debug message");
 | 
			
		||||
    Log_warning("This is a warning message%s", "123");
 | 
			
		||||
 | 
			
		||||
    destroyDefaultLogger();
 | 
			
		||||
    loggingDestroyAll();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
@@ -50,7 +50,7 @@ int main() {
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
    log_Handler *hander = loggingHandlerFile("test_log", 1024 * 1024 * 10);
 | 
			
		||||
    addHandler(getDefaultLogger(), hander);
 | 
			
		||||
    loggingAddHandler(loggingGetDefaultLogger(), hander);
 | 
			
		||||
 | 
			
		||||
    Log_info("This is an info message");
 | 
			
		||||
    Log_error("This is an error message%s", "123");
 | 
			
		||||
@@ -58,7 +58,7 @@ int main() {
 | 
			
		||||
    Log_debug("This is a debug message");
 | 
			
		||||
    Log_warning("This is a warning message%s", "123");
 | 
			
		||||
 | 
			
		||||
    destroyDefaultLogger();
 | 
			
		||||
    loggingDestroyAll();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
@@ -91,7 +91,7 @@ int main() {
 | 
			
		||||
                            loggingHandlerFile("test_interceptor", 1024 * 1024),
 | 
			
		||||
                            false);
 | 
			
		||||
 | 
			
		||||
    addFilter(getDefaultLogger(), tint);
 | 
			
		||||
    loggingAddFilter(loggingGetDefaultLogger(), tint);
 | 
			
		||||
 | 
			
		||||
    char *test2[]     = {"123", NULL};
 | 
			
		||||
 | 
			
		||||
@@ -101,7 +101,7 @@ int main() {
 | 
			
		||||
        loggingHandlerFile("test_interceptor1", 1024 * 1024),
 | 
			
		||||
        true);
 | 
			
		||||
 | 
			
		||||
    addFilter(getDefaultLogger(), tint1);
 | 
			
		||||
    loggingAddFilter(loggingGetDefaultLogger(), tint1);
 | 
			
		||||
 | 
			
		||||
    printf("\n");
 | 
			
		||||
    printf("filter added\n");
 | 
			
		||||
@@ -113,7 +113,7 @@ int main() {
 | 
			
		||||
    Log_debug("This is a debug message");
 | 
			
		||||
    Log_warning("This is a warning message%s", "123");
 | 
			
		||||
 | 
			
		||||
    destroyDefaultLogger();
 | 
			
		||||
    loggingDestroyAll();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								README.md
									
									
									
									
									
								
							@@ -23,7 +23,7 @@ conan create .
 | 
			
		||||
在你的项目的conanfile.txt中添加
 | 
			
		||||
```txt
 | 
			
		||||
[requires]
 | 
			
		||||
logging/0.5.0
 | 
			
		||||
logging/1.0.0
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```shell
 | 
			
		||||
@@ -53,7 +53,7 @@ int main() {
 | 
			
		||||
    Log_debug("This is a debug message");
 | 
			
		||||
    Log_warning("This is a warning message%s", "123");
 | 
			
		||||
 | 
			
		||||
    destroyDefaultLogger();
 | 
			
		||||
    loggingDestroyAll();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
@@ -65,7 +65,7 @@ int main() {
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
    log_Handler *hander = loggingHandlerFile("test_log", 1024 * 1024 * 10);
 | 
			
		||||
    addHandler(getDefaultLogger(), hander);
 | 
			
		||||
    loggingAddHandler(loggingGetDefaultLogger(), hander);
 | 
			
		||||
 | 
			
		||||
    Log_info("This is an info message");
 | 
			
		||||
    Log_error("This is an error message%s", "123");
 | 
			
		||||
@@ -73,7 +73,7 @@ int main() {
 | 
			
		||||
    Log_debug("This is a debug message");
 | 
			
		||||
    Log_warning("This is a warning message%s", "123");
 | 
			
		||||
 | 
			
		||||
    destroyDefaultLogger();
 | 
			
		||||
    loggingDestroyAll();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
@@ -107,7 +107,7 @@ int main() {
 | 
			
		||||
                            loggingHandlerFile("test_interceptor", 1024 * 1024),
 | 
			
		||||
                            false);
 | 
			
		||||
 | 
			
		||||
    addFilter(getDefaultLogger(), tint);
 | 
			
		||||
    loggingAddFilter(loggingGetDefaultLogger(), tint);
 | 
			
		||||
 | 
			
		||||
    char *test2[]     = {"123", NULL};
 | 
			
		||||
 | 
			
		||||
@@ -117,7 +117,7 @@ int main() {
 | 
			
		||||
        loggingHandlerFile("test_interceptor1", 1024 * 1024),
 | 
			
		||||
        true);
 | 
			
		||||
 | 
			
		||||
    addFilter(getDefaultLogger(), tint1);
 | 
			
		||||
    loggingAddFilter(loggingGetDefaultLogger(), tint1);
 | 
			
		||||
 | 
			
		||||
    printf("\n");
 | 
			
		||||
    printf("filter added\n");
 | 
			
		||||
@@ -129,7 +129,7 @@ int main() {
 | 
			
		||||
    Log_debug("This is a debug message");
 | 
			
		||||
    Log_warning("This is a warning message%s", "123");
 | 
			
		||||
 | 
			
		||||
    destroyDefaultLogger();
 | 
			
		||||
    loggingDestroyAll();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 
 | 
			
		||||
@@ -15,27 +15,28 @@ extern "C" {
 | 
			
		||||
 | 
			
		||||
// 默认日志器宏
 | 
			
		||||
#define Log_fatal(format, ...)                                                 \
 | 
			
		||||
    logMessage(NULL, LOG_FATAL, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
    loggingMessage(NULL, LOG_FATAL, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
#define Log_error(format, ...)                                                 \
 | 
			
		||||
    logMessage(NULL, LOG_ERROR, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
    loggingMessage(NULL, LOG_ERROR, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
#define Log_warning(format, ...)                                               \
 | 
			
		||||
    logMessage(NULL, LOG_WARNING, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
    loggingMessage(NULL, LOG_WARNING, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
#define Log_info(format, ...)                                                  \
 | 
			
		||||
    logMessage(NULL, LOG_INFO, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
    loggingMessage(NULL, LOG_INFO, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
#define Log_debug(format, ...)                                                 \
 | 
			
		||||
    logMessage(NULL, LOG_DEBUG, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
    loggingMessage(NULL, LOG_DEBUG, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
// 日志器宏
 | 
			
		||||
#define log_fatal(logger, format, ...)                                         \
 | 
			
		||||
    logMessage(logger, LOG_FATAL, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
    loggingMessage(logger, LOG_FATAL, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
#define log_error(logger, format, ...)                                         \
 | 
			
		||||
    logMessage(logger, LOG_ERROR, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
    loggingMessage(logger, LOG_ERROR, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
#define log_warning(logger, format, ...)                                       \
 | 
			
		||||
    logMessage(logger, LOG_WARNING, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
    loggingMessage(                                                            \
 | 
			
		||||
        logger, LOG_WARNING, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
#define log_info(logger, format, ...)                                          \
 | 
			
		||||
    logMessage(logger, LOG_INFO, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
    loggingMessage(logger, LOG_INFO, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
#define log_debug(logger, format, ...)                                         \
 | 
			
		||||
    logMessage(logger, LOG_DEBUG, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
    loggingMessage(logger, LOG_DEBUG, __FILE__, __LINE__, format, ##__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
typedef struct Logger {
 | 
			
		||||
    log_level    level;
 | 
			
		||||
@@ -44,41 +45,41 @@ typedef struct Logger {
 | 
			
		||||
    const char  *name;
 | 
			
		||||
} Logger;
 | 
			
		||||
 | 
			
		||||
bool addHandler(Logger *logger, log_Handler *handler);
 | 
			
		||||
bool addFilter(Logger *logger, log_filter *filter);
 | 
			
		||||
bool loggingAddHandler(Logger *logger, log_Handler *handler);
 | 
			
		||||
bool loggingAddFilter(Logger *logger, log_filter *filter);
 | 
			
		||||
 | 
			
		||||
void logMessage(Logger     *logger,
 | 
			
		||||
                log_level   level,
 | 
			
		||||
                const char *file,
 | 
			
		||||
                int         line,
 | 
			
		||||
                const char *message,
 | 
			
		||||
                ...);
 | 
			
		||||
void loggingMessage(Logger     *logger,
 | 
			
		||||
                    log_level   level,
 | 
			
		||||
                    const char *file,
 | 
			
		||||
                    int         line,
 | 
			
		||||
                    const char *message,
 | 
			
		||||
                    ...);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief 创建一个日志句柄对象
 | 
			
		||||
 * @param name 日志器名称
 | 
			
		||||
 * @return 日志句柄对象
 | 
			
		||||
 */
 | 
			
		||||
Logger *newLogger(const char *name);
 | 
			
		||||
Logger *loggingNewLogger(const char *name);
 | 
			
		||||
/**
 | 
			
		||||
 * @brief 获取默认日志对象
 | 
			
		||||
 * @return 默认日志对象
 | 
			
		||||
 */
 | 
			
		||||
Logger *getDefaultLogger(void);
 | 
			
		||||
Logger *loggingGetDefaultLogger(void);
 | 
			
		||||
 | 
			
		||||
Logger *getLogger(const char *name);
 | 
			
		||||
Logger *loggingGetLogger(const char *name);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief 销毁日志对象,该方法会销毁默认日志对象
 | 
			
		||||
 */
 | 
			
		||||
void destroyDefaultLogger(void);
 | 
			
		||||
void loggingDestroyAll(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief 销毁日志对象
 | 
			
		||||
 * @param logger 日志对象
 | 
			
		||||
 * @return void
 | 
			
		||||
 */
 | 
			
		||||
void destroyLogger(Logger *logger);
 | 
			
		||||
void loggingDestroyLogger(Logger *logger);
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ static Map *LOGGER_MAP     = NULL; // 日志对象映射表
 | 
			
		||||
 * @brief 为日志添加一个handler
 | 
			
		||||
 * @param handler 处理器对象
 | 
			
		||||
 */
 | 
			
		||||
bool addHandler(Logger *logger, log_Handler *handler) {
 | 
			
		||||
bool loggingAddHandler(Logger *logger, log_Handler *handler) {
 | 
			
		||||
    if (logger == NULL || handler == NULL) {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
@@ -45,7 +45,7 @@ bool addHandler(Logger *logger, log_Handler *handler) {
 | 
			
		||||
 * @brief 为日志添加一个filter
 | 
			
		||||
 * @param filter 过滤器对象
 | 
			
		||||
 */
 | 
			
		||||
bool addFilter(Logger *logger, log_filter *filter) {
 | 
			
		||||
bool loggingAddFilter(Logger *logger, log_filter *filter) {
 | 
			
		||||
    if (logger == NULL || filter == NULL) {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
@@ -142,16 +142,16 @@ log_cope(Logger *logger, char *level, const char *color, const char *message) {
 | 
			
		||||
    output_to_handler(logger, level, color, message);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void logMessage(Logger     *logger,
 | 
			
		||||
                log_level   level,
 | 
			
		||||
                const char *file,
 | 
			
		||||
                int         line,
 | 
			
		||||
                const char *message,
 | 
			
		||||
                ...) {
 | 
			
		||||
void loggingMessage(Logger     *logger,
 | 
			
		||||
                    log_level   level,
 | 
			
		||||
                    const char *file,
 | 
			
		||||
                    int         line,
 | 
			
		||||
                    const char *message,
 | 
			
		||||
                    ...) {
 | 
			
		||||
    Logger *_logger = NULL;
 | 
			
		||||
    if (logger == NULL) {
 | 
			
		||||
        if (ROOT_LOGGER == NULL) {
 | 
			
		||||
            ROOT_LOGGER = newLogger("ROOT"); // 创建根日志对象
 | 
			
		||||
            ROOT_LOGGER = loggingNewLogger("ROOT"); // 创建根日志对象
 | 
			
		||||
        }
 | 
			
		||||
        _logger = ROOT_LOGGER;
 | 
			
		||||
    } else {
 | 
			
		||||
@@ -197,7 +197,7 @@ void logMessage(Logger     *logger,
 | 
			
		||||
 * @param name 日志器名称
 | 
			
		||||
 * @return 日志器对象
 | 
			
		||||
 */
 | 
			
		||||
Logger *newLogger(const char *name) {
 | 
			
		||||
Logger *loggingNewLogger(const char *name) {
 | 
			
		||||
    Logger *logger = (Logger *)malloc(sizeof(Logger));
 | 
			
		||||
    if (logger == NULL) {
 | 
			
		||||
        return NULL;
 | 
			
		||||
@@ -217,12 +217,12 @@ Logger *newLogger(const char *name) {
 | 
			
		||||
    return logger;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Logger *getDefaultLogger(void) {
 | 
			
		||||
Logger *loggingGetDefaultLogger(void) {
 | 
			
		||||
    if (ROOT_LOGGER != NULL) {
 | 
			
		||||
        return ROOT_LOGGER;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ROOT_LOGGER = newLogger("ROOT");
 | 
			
		||||
    ROOT_LOGGER = loggingNewLogger("ROOT");
 | 
			
		||||
    return ROOT_LOGGER;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -232,7 +232,7 @@ Logger *getDefaultLogger(void) {
 | 
			
		||||
 * @param level 日志等级
 | 
			
		||||
 * @return 日志器对象
 | 
			
		||||
 */
 | 
			
		||||
Logger *getLogger(const char *name) {
 | 
			
		||||
Logger *loggingGetLogger(const char *name) {
 | 
			
		||||
    if (name == NULL) {
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
@@ -257,7 +257,7 @@ Logger *getLogger(const char *name) {
 | 
			
		||||
    return logger;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void destroyLogger(Logger *logger) {
 | 
			
		||||
void loggingDestroyLogger(Logger *logger) {
 | 
			
		||||
    if (logger != NULL) {
 | 
			
		||||
        if (logger->handler != NULL) {
 | 
			
		||||
            logger->handler->_free(logger->handler);
 | 
			
		||||
@@ -280,13 +280,13 @@ static void
 | 
			
		||||
__destroyLoggerForeach(const char *key, void *value, void *user_data) {
 | 
			
		||||
    (void)user_data;
 | 
			
		||||
    (void)key;
 | 
			
		||||
    destroyLogger(*(Logger **)value);
 | 
			
		||||
    loggingDestroyLogger(*(Logger **)value);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief 销毁日志对象
 | 
			
		||||
 */
 | 
			
		||||
void destroyDefaultLogger(void) {
 | 
			
		||||
void loggingDestroyAll(void) {
 | 
			
		||||
    map_foreach(LOGGER_MAP, __destroyLoggerForeach, NULL);
 | 
			
		||||
    map_destroy(LOGGER_MAP);
 | 
			
		||||
}
 | 
			
		||||
@@ -20,7 +20,7 @@ int main() {
 | 
			
		||||
                            loggingHandlerFile("test_interceptor", 1024 * 1024),
 | 
			
		||||
                            false);
 | 
			
		||||
 | 
			
		||||
    addFilter(getDefaultLogger(), tint);
 | 
			
		||||
    loggingAddFilter(loggingGetDefaultLogger(), tint);
 | 
			
		||||
 | 
			
		||||
    char *test2[]     = {"123", NULL};
 | 
			
		||||
 | 
			
		||||
@@ -30,7 +30,7 @@ int main() {
 | 
			
		||||
        loggingHandlerFile("test_interceptor1", 1024 * 1024),
 | 
			
		||||
        true);
 | 
			
		||||
 | 
			
		||||
    addFilter(getDefaultLogger(), tint1);
 | 
			
		||||
    loggingAddFilter(loggingGetDefaultLogger(), tint1);
 | 
			
		||||
 | 
			
		||||
    printf("\n");
 | 
			
		||||
    printf("filter added\n");
 | 
			
		||||
@@ -42,6 +42,6 @@ int main() {
 | 
			
		||||
    Log_debug("This is a debug message");
 | 
			
		||||
    Log_warning("This is a warning message%s", "123");
 | 
			
		||||
 | 
			
		||||
    destroyDefaultLogger();
 | 
			
		||||
    loggingDestroyAll();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
    log_Handler *hander = loggingHandlerFile("test_log", 1024 * 1024 * 10);
 | 
			
		||||
    addHandler(getDefaultLogger(), hander);
 | 
			
		||||
    loggingAddHandler(loggingGetDefaultLogger(), hander);
 | 
			
		||||
 | 
			
		||||
    Log_info("This is an info message");
 | 
			
		||||
    Log_error("This is an error message%s", "123");
 | 
			
		||||
@@ -11,6 +11,6 @@ int main() {
 | 
			
		||||
    Log_debug("This is a debug message");
 | 
			
		||||
    Log_warning("This is a warning message%s", "123");
 | 
			
		||||
 | 
			
		||||
    destroyDefaultLogger();
 | 
			
		||||
    loggingDestroyAll();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
@@ -3,13 +3,13 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
    Logger *t1  = getLogger("Test1");
 | 
			
		||||
    Logger *t1  = loggingGetLogger("Test1");
 | 
			
		||||
    t1->level   = LOG_ERROR;
 | 
			
		||||
 | 
			
		||||
    Logger *t2  = getLogger("Test2");
 | 
			
		||||
    Logger *t2  = loggingGetLogger("Test2");
 | 
			
		||||
    t2->level   = LOG_DEBUG;
 | 
			
		||||
 | 
			
		||||
    Logger *t11 = getLogger("Test1");
 | 
			
		||||
    Logger *t11 = loggingGetLogger("Test1");
 | 
			
		||||
 | 
			
		||||
    if (t1 == t11) {
 | 
			
		||||
        printf("t1 and t11 are the same\n");
 | 
			
		||||
@@ -19,6 +19,6 @@ int main() {
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    destroyDefaultLogger();
 | 
			
		||||
    loggingDestroyAll();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
@@ -7,6 +7,6 @@ int main() {
 | 
			
		||||
    Log_debug("This is a debug message");
 | 
			
		||||
    Log_warning("This is a warning message%s", "123");
 | 
			
		||||
 | 
			
		||||
    destroyDefaultLogger();
 | 
			
		||||
    loggingDestroyAll();
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user