From aef37e91f4e6f7781d4f6512ffc4ddc48a687cb5 Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Wed, 15 Jan 2025 23:15:06 +0100 Subject: Change json log example --- test/log.c | 51 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 14 deletions(-) (limited to 'test') diff --git a/test/log.c b/test/log.c index f2b4187..32e126e 100644 --- a/test/log.c +++ b/test/log.c @@ -4,23 +4,46 @@ #define ANY_LOG_IMPLEMENT #define ANY_LOG_MODULE "test" -#define ANY_LOG_VALUE_BEFORE(level, module, func, message) \ - "{\"module\": \"%s\", \"function\": \"%s\", \"level\": \"%s\", \"message\": \"%s\", ", \ - module, func, any_log_level_strings[level], message - -#define ANY_LOG_VALUE_BOOL(key, value) "\"%s\": %s", key, (value ? "true" : "false") -#define ANY_LOG_VALUE_INT(key, value) "\"%s\": %d", key, value -#define ANY_LOG_VALUE_HEX(key, value) "\"%s\": %u", key, value -#define ANY_LOG_VALUE_LONG(key, value) "\"%s\": %ld", key, value -#define ANY_LOG_VALUE_PTR(key, value) "\"%s\": \"%p\"", key, value -#define ANY_LOG_VALUE_DOUBLE(key, value) "\"%s\": %lf", key, value -#define ANY_LOG_VALUE_STRING(key, value) "\"%s \": \"%s\"", key, value -#define ANY_LOG_VALUE_GENERIC(key, stream, formatter, value) \ +// Print in a JSON like way + +#define ANY_LOG_VALUE_BEFORE(stream, level, module, func, message) \ + fprintf(stream, "{\"module\": \"%s\", \"function\": \"%s\", \"level\": \"%s\", \"message\": \"%s\", ", \ + module, func, any_log_level_strings[level], message) + +#define ANY_LOG_VALUE_BOOL(stream, key, value) \ + fprintf(stream, "\"%s\": %s", key, value ? "true" : "false") + +#define ANY_LOG_VALUE_INT(stream, key, value) \ + fprintf(stream, "\"%s\": %d", key, value) + +#define ANY_LOG_VALUE_HEX(stream, key, value) \ + fprintf(stream, "\"%s\": %u", key, value) + +#define ANY_LOG_VALUE_LONG(stream, key, value) \ + fprintf(stream, "\"%s\": %ld", key, value) + +#define ANY_LOG_VALUE_PTR(stream, key, value) \ do { \ - fprintf(stream, "\"%s\": ", key); \ + if (value == NULL) fprintf(stream, "\"%s\": none", key); \ + else fprintf(stream, "\"%s\": %p", key, value); \ + } while (false) + +#define ANY_LOG_VALUE_DOUBLE(stream, key, value) \ + fprintf(stream, "\"%s\": %lf", key, value) + +#define ANY_LOG_VALUE_STRING(stream, key, value) \ + fprintf(stream, "\"%s \": \"%s\"", key, value) + +#define ANY_LOG_VALUE_GENERIC(stream, key, value, formatter) \ + do { \ + fprintf(stream, "\"%s\": \"", key); \ formatter(stream, value); \ + fprintf(stream, "\""); \ } while (false) -#define ANY_LOG_VALUE_AFTER(level, module, func, message) "}\n" + +#define ANY_LOG_VALUE_AFTER(stream, level, module, func, message) \ + fprintf(stream, "}\n") + #include "any_log.h" -- cgit v1.2.3