summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/logging/logging.c20
-rw-r--r--src/logging/logging.h18
-rw-r--r--src/test/logging/logging_tests.c36
3 files changed, 43 insertions, 31 deletions
diff --git a/src/logging/logging.c b/src/logging/logging.c
index 429f222..77c648c 100644
--- a/src/logging/logging.c
+++ b/src/logging/logging.c
@@ -1,11 +1,15 @@
#include <stdio.h>
+#include <stdarg.h>
#include "logging/logging.h"
-const char * honey_log_level_str_(struct honey_log_info *info)
+struct honey_log_info_t honey_log_info;
+
+
+const char * honey_log_level_str()
{
- switch(info->log_level) {
+ switch(honey_log_info.log_level) {
case DEBUG:
return "DEBUG";
break;
@@ -31,3 +35,15 @@ const char * honey_log_level_str_(struct honey_log_info *info)
break;
}
}
+
+
+void honey_debug(const char *fmt, ...)
+{
+ if (honey_log_info.log_level >= DEBUG) {
+ va_list args;
+ va_start(args, fmt);
+ fprintf(honey_log_info.debug_out, "[DEBUG] ");
+ vfprintf(honey_log_info.debug_out, fmt, args);
+ va_end(args);
+ }
+}
diff --git a/src/logging/logging.h b/src/logging/logging.h
index 8f4d174..69ea88e 100644
--- a/src/logging/logging.h
+++ b/src/logging/logging.h
@@ -4,7 +4,7 @@
#include <stdio.h>
-struct honey_log_info {
+struct honey_log_info_t {
enum { FATAL, ERROR, WARN, INFO, DEBUG } log_level;
FILE *debug_out;
FILE *info_out;
@@ -13,16 +13,14 @@ struct honey_log_info {
FILE *fatal_out;
};
-const char * honey_log_level_str_(struct honey_log_info *info);
+extern struct honey_log_info_t honey_log_info;
-#define honey_log_(info, required_level, prefix, ...) do { \
- if (info.log_level >= required_level) { \
- fprintf(info.debug_out, prefix " " __VA_ARGS__); \
- } \
- } while(0)
+const char * honey_log_level_str();
-#define honey_debug_(info, ...) \
- honey_log_(info, DEBUG, "[DEBUG]", __VA_ARGS__)
-
+void honey_debug(const char *fmt, ...);
+void honey_info(const char *fmt, ...);
+void honey_warn(const char *fmt, ...);
+void honey_error(const char *fmt, ...);
+void honey_fatal(const char *fmt, ...);
#endif
diff --git a/src/test/logging/logging_tests.c b/src/test/logging/logging_tests.c
index 2d4ced9..e0aa5ef 100644
--- a/src/test/logging/logging_tests.c
+++ b/src/test/logging/logging_tests.c
@@ -10,6 +10,7 @@
/* test declarations */
mu_test test_log_get_level();
+mu_test test_log_set_defaults();
mu_test test_log_debug();
@@ -22,26 +23,24 @@ void honey_logging_tests()
}
-/* test definitions */
+/* ~~~~~~~~ test definitions ~~~~~~~~ */
mu_test test_log_get_level()
{
- struct honey_log_info info;
+ honey_log_info.log_level = DEBUG;
+ mu_assert_streq("DEBUG", honey_log_level_str());
- info.log_level = DEBUG;
- mu_assert_streq("DEBUG", honey_log_level_str_(&info));
+ honey_log_info.log_level = INFO;
+ mu_assert_streq("INFO", honey_log_level_str());
- info.log_level = INFO;
- mu_assert_streq("INFO", honey_log_level_str_(&info));
+ honey_log_info.log_level = WARN;
+ mu_assert_streq("WARN", honey_log_level_str());
- info.log_level = WARN;
- mu_assert_streq("WARN", honey_log_level_str_(&info));
+ honey_log_info.log_level = ERROR;
+ mu_assert_streq("ERROR", honey_log_level_str());
- info.log_level = ERROR;
- mu_assert_streq("ERROR", honey_log_level_str_(&info));
-
- info.log_level = FATAL;
- mu_assert_streq("FATAL", honey_log_level_str_(&info));
+ honey_log_info.log_level = FATAL;
+ mu_assert_streq("FATAL", honey_log_level_str());
return 0;
}
@@ -56,16 +55,15 @@ mu_test test_log_debug()
stream = open_memstream(&buffer, &len);
mu_assert_unequal(stream, NULL);
- struct honey_log_info info;
- info.debug_out = stream;
- info.log_level = FATAL;
+ honey_log_info.debug_out = stream;
+ honey_log_info.log_level = FATAL;
- honey_debug_(info, "hello, world!");
+ honey_debug("hello, %s!", "world");
fflush(stream);
mu_assert_streq(buffer, "");
- info.log_level = DEBUG;
- honey_debug_(info, "hello, world!");
+ honey_log_info.log_level = DEBUG;
+ honey_debug("hello, %s!", "world");
fclose(stream);
mu_assert_streq(buffer, "[DEBUG] hello, world!");
free(buffer);