From 7a180e4d602ecfc86ab4f62ce1dca8ac75017498 Mon Sep 17 00:00:00 2001 From: JoshuaMoelans <60878493+JoshuaMoelans@users.noreply.github.com> Date: Mon, 15 Dec 2025 10:24:30 +0100 Subject: [PATCH 1/5] add printf for logs when debug is true --- src/sentry_logs.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/sentry_logs.c b/src/sentry_logs.c index 50dfec020..c1d645d4c 100644 --- a/src/sentry_logs.c +++ b/src/sentry_logs.c @@ -774,6 +774,11 @@ sentry__logs_log(sentry_level_t level, const char *message, va_list args) discarded = true; } } + if (options->debug) { + printf("LOG [%s]: %s\n", level_as_string(level), + sentry_value_as_string( + sentry_value_get_by_key(log, "body"))); + } } if (discarded) { return SENTRY_LOG_RETURN_DISCARD; From 85239d603314c5b4462ae433b76d32ce0430ccdd Mon Sep 17 00:00:00 2001 From: JoshuaMoelans <60878493+JoshuaMoelans@users.noreply.github.com> Date: Mon, 15 Dec 2025 10:30:33 +0100 Subject: [PATCH 2/5] use existing SENTRY_(LEVEL) macros --- src/sentry_logger.h | 5 +++++ src/sentry_logs.c | 27 ++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/sentry_logger.h b/src/sentry_logger.h index 87191da72..b6c8febed 100644 --- a/src/sentry_logger.h +++ b/src/sentry_logger.h @@ -46,4 +46,9 @@ void sentry__logger_disable(void); #define SENTRY_ERROR(message) sentry__logger_log(SENTRY_LEVEL_ERROR, message) +#define SENTRY_FATALF(message, ...) \ + sentry__logger_log(SENTRY_LEVEL_FATAL, message, __VA_ARGS__) + +#define SENTRY_FATAL(message) sentry__logger_log(SENTRY_LEVEL_FATAL, message) + #endif diff --git a/src/sentry_logs.c b/src/sentry_logs.c index c1d645d4c..4e030bf9b 100644 --- a/src/sentry_logs.c +++ b/src/sentry_logs.c @@ -752,6 +752,31 @@ construct_log(sentry_level_t level, const char *message, va_list args) return log; } +void +debug_print_log(sentry_level_t level, const char *log_body) +{ + switch (level) { + case SENTRY_LEVEL_TRACE: + SENTRY_TRACEF("LOG: %s", log_body); + break; + case SENTRY_LEVEL_DEBUG: + SENTRY_DEBUGF("LOG: %s", log_body); + break; + case SENTRY_LEVEL_INFO: + SENTRY_INFOF("LOG: %s", log_body); + break; + case SENTRY_LEVEL_WARNING: + SENTRY_WARNF("LOG: %s", log_body); + break; + case SENTRY_LEVEL_ERROR: + SENTRY_ERRORF("LOG: %s", log_body); + break; + case SENTRY_LEVEL_FATAL: + SENTRY_FATALF("LOG: %s", log_body); + break; + } +} + log_return_value_t sentry__logs_log(sentry_level_t level, const char *message, va_list args) { @@ -775,7 +800,7 @@ sentry__logs_log(sentry_level_t level, const char *message, va_list args) } } if (options->debug) { - printf("LOG [%s]: %s\n", level_as_string(level), + debug_print_log(level, sentry_value_as_string( sentry_value_get_by_key(log, "body"))); } From 052c03b4804f573f3b589022718830d70ed4605d Mon Sep 17 00:00:00 2001 From: JoshuaMoelans <60878493+JoshuaMoelans@users.noreply.github.com> Date: Mon, 15 Dec 2025 10:31:48 +0100 Subject: [PATCH 3/5] update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 369e4ec5b..78d7638e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Removed the 10-item limit per envelope for non-session data. Sessions are now limited to 100 per envelope, while other items (e.g., attachments) have no limit in amount. ([#1347](https://github.com/getsentry/sentry-native/pull/1347)) - Align the `breakpad` interface changes introduced with [#1083](https://github.com/getsentry/sentry-native/pull/1083) with the corresponding iOS build. ([#1465](https://github.com/getsentry/sentry-native/pull/1465)) +- Add structured logs to debug output when `debug` option is set. ([#1466](https://github.com/getsentry/sentry-native/pull/1466)) ## 0.12.2 From 20426054cff5f9a836c2066b2288c879b654fbe8 Mon Sep 17 00:00:00 2001 From: JoshuaMoelans <60878493+JoshuaMoelans@users.noreply.github.com> Date: Mon, 15 Dec 2025 10:50:54 +0100 Subject: [PATCH 4/5] add future TODO + fix null-log --- src/sentry_logs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sentry_logs.c b/src/sentry_logs.c index 4e030bf9b..894cd27f1 100644 --- a/src/sentry_logs.c +++ b/src/sentry_logs.c @@ -755,6 +755,8 @@ construct_log(sentry_level_t level, const char *message, va_list args) void debug_print_log(sentry_level_t level, const char *log_body) { + // TODO if we enable our debug-macro as logging integration + // we need to avoid recursion here switch (level) { case SENTRY_LEVEL_TRACE: SENTRY_TRACEF("LOG: %s", log_body); @@ -799,7 +801,7 @@ sentry__logs_log(sentry_level_t level, const char *message, va_list args) discarded = true; } } - if (options->debug) { + if (options->debug && !sentry_value_is_null(log)) { debug_print_log(level, sentry_value_as_string( sentry_value_get_by_key(log, "body"))); From 5c6543fecd38d1f040d8a3b7e43bd13726f9aff9 Mon Sep 17 00:00:00 2001 From: JoshuaMoelans <60878493+JoshuaMoelans@users.noreply.github.com> Date: Mon, 15 Dec 2025 11:27:27 +0100 Subject: [PATCH 5/5] make debug_print_log static --- src/sentry_logs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sentry_logs.c b/src/sentry_logs.c index 894cd27f1..55ea9b41d 100644 --- a/src/sentry_logs.c +++ b/src/sentry_logs.c @@ -752,7 +752,7 @@ construct_log(sentry_level_t level, const char *message, va_list args) return log; } -void +static void debug_print_log(sentry_level_t level, const char *log_body) { // TODO if we enable our debug-macro as logging integration