diff --git a/README.md b/README.md index e2521bf..882fa4b 100644 --- a/README.md +++ b/README.md @@ -49,11 +49,11 @@ cmake --install . int main() { Logger *logger = newDefaultLogger("testLogger", LOG_DEBUG); - log_info("This is an info message"); - log_error("This is an error message%s", "123"); - log_fatal("This is an fatal message"); - log_debug("This is a debug message"); - log_warning("This is a warning message%s", "123"); + Log_info("This is an info message"); + Log_error("This is an error message%s", "123"); + Log_fatal("This is an fatal message"); + Log_debug("This is a debug message"); + Log_warning("This is a warning message%s", "123"); destroyDefaultLogger(); return 0; @@ -69,11 +69,11 @@ int main() { Logger *logger = newDefaultLogger("testLogger", LOG_DEBUG); logger->addHandler(loggingHandlerFile("test1", 1024*1024)); - log_info("This is an info message"); - log_error("This is an error message%s", "123"); - log_fatal("This is an fatal message"); - log_debug("This is a debug message"); - log_warning("This is a warning message%s", "123"); + Log_info("This is an info message"); + Log_error("This is an error message%s", "123"); + Log_fatal("This is an fatal message"); + Log_debug("This is a debug message"); + Log_warning("This is a warning message%s", "123"); destroyDefaultLogger(); return 0; @@ -95,11 +95,11 @@ int main() { int main() { Logger *logger = newDefaultLogger("testLogger", LOG_DEBUG); - log_info("This is an info message"); - log_error("This is an error message%s", "123"); - log_fatal("This is an fatal message"); - log_debug("This is a debug message"); - log_warning("This is a warning message%s", "123"); + Log_info("This is an info message"); + Log_error("This is an error message%s", "123"); + Log_fatal("This is an fatal message"); + Log_debug("This is a debug message"); + Log_warning("This is a warning message%s", "123"); char *test1[] = {"123", "tt", NULL}; @@ -115,11 +115,11 @@ int main() { printf("filter added\n"); printf("\n"); - log_info("This is an info message"); - log_error("This is an error message%s", "123"); - log_fatal("This is an fatal message"); - log_debug("This is a debug message"); - log_warning("This is a warning message%s", "123"); + Log_info("This is an info message"); + Log_error("This is an error message%s", "123"); + Log_fatal("This is an fatal message"); + Log_debug("This is a debug message"); + Log_warning("This is a warning message%s", "123"); destroyDefaultLogger(); return 0; @@ -136,11 +136,11 @@ int main() { int main() { Logger *logger = newDefaultLogger("testLogger", LOG_DEBUG); - log_info("This is an info message"); - log_error("This is an error message%s", "123"); - log_fatal("This is an fatal message"); - log_debug("This is a debug message"); - log_warning("This is a warning message%s", "123"); + Log_info("This is an info message"); + Log_error("This is an error message%s", "123"); + Log_fatal("This is an fatal message"); + Log_debug("This is a debug message"); + Log_warning("This is a warning message%s", "123"); char *test1[] = {"This",NULL}; @@ -166,11 +166,11 @@ int main() { printf("filter added\n"); printf("\n"); - log_info("This is an info message"); - log_error("This is an error message%s", "123"); - log_fatal("This is an fatal message"); - log_debug("This is a debug message"); - log_warning("This is a warning message%s", "123"); + Log_info("This is an info message"); + Log_error("This is an error message%s", "123"); + Log_fatal("This is an fatal message"); + Log_debug("This is a debug message"); + Log_warning("This is a warning message%s", "123"); destroyDefaultLogger(); return 0; diff --git a/conanfile.py b/conanfile.py index 5ad5b82..5153e40 100644 --- a/conanfile.py +++ b/conanfile.py @@ -5,7 +5,7 @@ import os class loggingRecipe(ConanFile): name = "logging" - version = "0.5.0" + version = "0.5.1" license = "MIT" author = "321640253@qq.com" url = "https://github.com/WangZhongDian/logging.git" diff --git a/include/logging.h b/include/logging.h index f995f14..230e4ec 100644 --- a/include/logging.h +++ b/include/logging.h @@ -12,6 +12,17 @@ extern "C" { #endif +#define Log_fatal(format, ...) \ + log_fatal(__FILE__, __LINE__, format, ##__VA_ARGS__) +#define Log_error(format, ...) \ + log_error(__FILE__, __LINE__, format, ##__VA_ARGS__) +#define Log_warning(format, ...) \ + log_warning(__FILE__, __LINE__, format, ##__VA_ARGS__) +#define Log_info(format, ...) \ + log_info(__FILE__, __LINE__, format, ##__VA_ARGS__) +#define Log_debug(format, ...) \ + log_debug(__FILE__, __LINE__, format, ##__VA_ARGS__) + typedef struct Logger { log_level level; log_Handler *handler; @@ -21,11 +32,11 @@ typedef struct Logger { bool (*addFilter)(log_filter *filter); } Logger; -void log_fatal(const char *format, ...); -void log_error(const char *format, ...); -void log_warning(const char *format, ...); -void log_info(const char *format, ...); -void log_debug(const char *format, ...); +void log_fatal(const char *file, int line, const char *format, ...); +void log_error(const char *file, int line, const char *format, ...); +void log_warning(const char *file, int line, const char *format, ...); +void log_info(const char *file, int line, const char *format, ...); +void log_debug(const char *file, int line, const char *format, ...); /** * @brief diff --git a/src/logging.c b/src/logging.c index c23d8b6..aa1494b 100644 --- a/src/logging.c +++ b/src/logging.c @@ -16,7 +16,7 @@ #define RESET "\033[0m" #define CYAN "\033[0;36m" -#define LOG_BUFFER_SIZE 1024 // 日志缓冲区大小,单个日志长度不能超过该值 +#define LOG_BUFFER_SIZE 4096 // 日志缓冲区大小,单个日志长度不能超过该值 static Logger *G_LOGGER = NULL; // 全局日志对象,唯一实例 @@ -75,23 +75,25 @@ static void output_to_handler(log_Handler *handler, const char *message) { char timeStr[20]; getTimeStr(timeStr); - char logStr[LOG_BUFFER_SIZE]; + char logStr[LOG_BUFFER_SIZE * 2]; if (handler->apply_color) - sprintf(logStr, - "[%s]: %s %s%s%s %s\n", - G_LOGGER->name, - timeStr, - color, - level, - RESET, - message); + snprintf(logStr, + LOG_BUFFER_SIZE * 2, + "[%s]: %s %s%s%s %s\n", + G_LOGGER->name, + timeStr, + color, + level, + RESET, + message); else - sprintf(logStr, - "[%s]: %s %s %s\n", - G_LOGGER->name, - timeStr, - level, - message); + snprintf(logStr, + LOG_BUFFER_SIZE * 2, + "[%s]: %s %s %s\n", + G_LOGGER->name, + timeStr, + level, + message); handler->output(handler, logStr); } @@ -129,58 +131,73 @@ static void _builtin_cope(log_level level_e, output_to_handler(handler, level, color, message); } -void log_fatal(const char *message, ...) { +void log_fatal(const char *file, int line, const char *message, ...) { if (G_LOGGER->level >= LOG_ERROR) { char logStr[LOG_BUFFER_SIZE]; + char finalLogStr[LOG_BUFFER_SIZE * 2]; va_list args; va_start(args, message); vsprintf(logStr, message, args); va_end(args); - _builtin_cope(LOG_FATAL, "Fatal", RED_B, logStr); + snprintf( + finalLogStr, LOG_BUFFER_SIZE * 2, "[%s:%d] %s", file, line, logStr); + _builtin_cope(LOG_FATAL, "Fatal", RED_B, finalLogStr); } } -void log_error(const char *message, ...) { +void log_error(const char *file, int line, const char *message, ...) { if (G_LOGGER->level >= LOG_ERROR) { char logStr[LOG_BUFFER_SIZE]; + char finalLogStr[LOG_BUFFER_SIZE * 2]; va_list args; va_start(args, message); vsprintf(logStr, message, args); va_end(args); - _builtin_cope(LOG_ERROR, "Error", RED, logStr); + snprintf( + finalLogStr, LOG_BUFFER_SIZE * 2, "[%s:%d] %s", file, line, logStr); + _builtin_cope(LOG_ERROR, "Error", RED, finalLogStr); } } -void log_warning(const char *message, ...) { +void log_warning(const char *file, int line, const char *message, ...) { if (G_LOGGER->level >= LOG_WARNING) { char logStr[LOG_BUFFER_SIZE]; + char finalLogStr[LOG_BUFFER_SIZE * 2]; va_list args; va_start(args, message); vsprintf(logStr, message, args); va_end(args); - _builtin_cope(LOG_WARNING, "Warning", YELLOW, logStr); + snprintf( + finalLogStr, LOG_BUFFER_SIZE * 2, "[%s:%d] %s", file, line, logStr); + _builtin_cope(LOG_WARNING, "Warning", YELLOW, finalLogStr); } } -void log_info(const char *message, ...) { +void log_info(const char *file, int line, const char *message, ...) { if (G_LOGGER->level >= LOG_INFO) { char logStr[LOG_BUFFER_SIZE]; + char finalLogStr[LOG_BUFFER_SIZE * 2]; va_list args; va_start(args, message); vsprintf(logStr, message, args); va_end(args); - _builtin_cope(LOG_INFO, "Info", GREEN, logStr); + snprintf( + finalLogStr, LOG_BUFFER_SIZE * 2, "[%s:%d] %s", file, line, logStr); + _builtin_cope(LOG_INFO, "Info", GREEN, finalLogStr); } } -void log_debug(const char *message, ...) { +void log_debug(const char *file, int line, const char *message, ...) { if (G_LOGGER->level >= LOG_DEBUG) { char logStr[LOG_BUFFER_SIZE]; + char finalLogStr[LOG_BUFFER_SIZE * 2]; va_list args; va_start(args, message); vsprintf(logStr, message, args); va_end(args); - _builtin_cope(LOG_DEBUG, "Debug", CYAN, logStr); + snprintf( + finalLogStr, LOG_BUFFER_SIZE * 2, "[%s:%d] %s", file, line, logStr); + _builtin_cope(LOG_DEBUG, "Debug", CYAN, finalLogStr); } } diff --git a/tests/test-filter.c b/tests/test-filter.c index 4471569..83b0150 100644 --- a/tests/test-filter.c +++ b/tests/test-filter.c @@ -8,11 +8,11 @@ int main() { Logger *logger = newDefaultLogger("testLogger", LOG_DEBUG); - log_info("This is an info message"); - log_error("This is an error message%s", "123"); - log_fatal("This is an fatal message"); - log_debug("This is a debug message"); - log_warning("This is a warning message%s", "123"); + Log_info("This is an info message"); + Log_error("This is an error message%s", "123"); + Log_fatal("This is an fatal message"); + Log_debug("This is a debug message"); + Log_warning("This is a warning message%s", "123"); char *test1[] = {"This", NULL}; @@ -38,11 +38,11 @@ int main() { printf("filter added\n"); printf("\n"); - log_info("This is an info message"); - log_error("This is an error message%s", "123"); - log_fatal("This is an fatal message"); - log_debug("This is a debug message"); - log_warning("This is a warning message%s", "123"); + Log_info("This is an info message"); + Log_error("This is an error message%s", "123"); + Log_fatal("This is an fatal message"); + Log_debug("This is a debug message"); + Log_warning("This is a warning message%s", "123"); destroyDefaultLogger(); return 0; diff --git a/tests/test-log-file.c b/tests/test-log-file.c index 3b04534..a9753c2 100644 --- a/tests/test-log-file.c +++ b/tests/test-log-file.c @@ -6,11 +6,11 @@ int main() { log_Handler *hander = loggingHandlerFile("test_log", 1024 * 1024 * 10); logger->addHandler(hander); - log_info("This is an info message"); - log_error("This is an error message%s", "123"); - log_fatal("This is an fatal message"); - log_debug("This is a debug message"); - log_warning("This is a warning message%s", "123"); + Log_info("This is an info message"); + Log_error("This is an error message%s", "123"); + Log_fatal("This is an fatal message"); + Log_debug("This is a debug message"); + Log_warning("This is a warning message%s", "123"); destroyDefaultLogger(); return 0; diff --git a/tests/test-simple.c b/tests/test-simple.c index 18251d6..f92565e 100644 --- a/tests/test-simple.c +++ b/tests/test-simple.c @@ -3,11 +3,11 @@ int main() { Logger *logger = newDefaultLogger("testLogger", LOG_DEBUG); - log_info("This is an info message"); - log_error("This is an error message%s", "123"); - log_fatal("This is an fatal message"); - log_debug("This is a debug message"); - log_warning("This is a warning message%s", "123"); + Log_info("This is an info message"); + Log_error("This is an error message%s", "123"); + Log_fatal("This is an fatal message"); + Log_debug("This is a debug message"); + Log_warning("This is a warning message%s", "123"); destroyDefaultLogger(); return 0;