aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/sentryintegration.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-02-27 17:12:00 +0100
committerGitHub Enterprise <[email protected]>2026-02-27 17:12:00 +0100
commit65eefdfe5a216b546f0d3d8fdfc5e9e58916e5f8 (patch)
tree4de2e47338d18b650c9b55a078046d46dd5fcd80 /src/zencore/sentryintegration.cpp
parentoptimize string matching (#791) (diff)
downloadzen-65eefdfe5a216b546f0d3d8fdfc5e9e58916e5f8.tar.xz
zen-65eefdfe5a216b546f0d3d8fdfc5e9e58916e5f8.zip
add sentry-sdk logger (#793)
eliminates spurious sentry log output during startup as the new channel defaults to WARN The level can be overridden via `--log-debug=sentry-sdk` or `--log-info=sentry-sdk`
Diffstat (limited to 'src/zencore/sentryintegration.cpp')
-rw-r--r--src/zencore/sentryintegration.cpp62
1 files changed, 54 insertions, 8 deletions
diff --git a/src/zencore/sentryintegration.cpp b/src/zencore/sentryintegration.cpp
index 00e67dc85..636e182b4 100644
--- a/src/zencore/sentryintegration.cpp
+++ b/src/zencore/sentryintegration.cpp
@@ -145,6 +145,8 @@ SentryAssertImpl::OnAssert(const char* Filename,
namespace zen {
# if ZEN_USE_SENTRY
+ZEN_DEFINE_LOG_CATEGORY_STATIC(LogSentry, "sentry-sdk");
+
static void
SentryLogFunction(sentry_level_t Level, const char* Message, va_list Args, [[maybe_unused]] void* Userdata)
{
@@ -163,26 +165,61 @@ SentryLogFunction(sentry_level_t Level, const char* Message, va_list Args, [[may
MessagePtr = LogMessage.c_str();
}
+ // SentryLogFunction can be called before the logging system is initialized
+ // (during sentry_init which runs before InitializeLogging). Fall back to
+ // console logging when the category logger is not yet available.
+ //
+ // Since we want to default to WARN level but this runs before logging has
+ // been configured, we ignore the callbacks for DEBUG/INFO explicitly here
+ // which means users don't see every possible log message if they're trying
+ // to configure the levels using --log-debug=sentry-sdk
+ if (!TheDefaultLogger)
+ {
+ switch (Level)
+ {
+ case SENTRY_LEVEL_DEBUG:
+ // ZEN_CONSOLE_DEBUG("sentry: {}", MessagePtr);
+ break;
+
+ case SENTRY_LEVEL_INFO:
+ // ZEN_CONSOLE_INFO("sentry: {}", MessagePtr);
+ break;
+
+ case SENTRY_LEVEL_WARNING:
+ ZEN_CONSOLE_WARN("sentry: {}", MessagePtr);
+ break;
+
+ case SENTRY_LEVEL_ERROR:
+ ZEN_CONSOLE_ERROR("sentry: {}", MessagePtr);
+ break;
+
+ case SENTRY_LEVEL_FATAL:
+ ZEN_CONSOLE_CRITICAL("sentry: {}", MessagePtr);
+ break;
+ }
+ return;
+ }
+
switch (Level)
{
case SENTRY_LEVEL_DEBUG:
- ZEN_CONSOLE_DEBUG("sentry: {}", MessagePtr);
+ ZEN_LOG_DEBUG(LogSentry, "sentry: {}", MessagePtr);
break;
case SENTRY_LEVEL_INFO:
- ZEN_CONSOLE_INFO("sentry: {}", MessagePtr);
+ ZEN_LOG_INFO(LogSentry, "sentry: {}", MessagePtr);
break;
case SENTRY_LEVEL_WARNING:
- ZEN_CONSOLE_WARN("sentry: {}", MessagePtr);
+ ZEN_LOG_WARN(LogSentry, "sentry: {}", MessagePtr);
break;
case SENTRY_LEVEL_ERROR:
- ZEN_CONSOLE_ERROR("sentry: {}", MessagePtr);
+ ZEN_LOG_ERROR(LogSentry, "sentry: {}", MessagePtr);
break;
case SENTRY_LEVEL_FATAL:
- ZEN_CONSOLE_CRITICAL("sentry: {}", MessagePtr);
+ ZEN_LOG_CRITICAL(LogSentry, "sentry: {}", MessagePtr);
break;
}
}
@@ -310,22 +347,31 @@ SentryIntegration::Initialize(const Config& Conf, const std::string& CommandLine
void
SentryIntegration::LogStartupInformation()
{
+ // Initialize the sentry-sdk log category at Warn level to reduce startup noise.
+ // The level can be overridden via --log-debug=sentry-sdk or --log-info=sentry-sdk
+ LogSentry.Logger().SetLogLevel(logging::level::Warn);
+
if (m_IsInitialized)
{
if (m_SentryErrorCode == 0)
{
if (m_AllowPII)
{
- ZEN_INFO("sentry initialized, username: '{}', hostname: '{}', id: '{}'", m_SentryUserName, m_SentryHostName, m_SentryId);
+ ZEN_LOG_INFO(LogSentry,
+ "sentry initialized, username: '{}', hostname: '{}', id: '{}'",
+ m_SentryUserName,
+ m_SentryHostName,
+ m_SentryId);
}
else
{
- ZEN_INFO("sentry initialized with anonymous reports");
+ ZEN_LOG_INFO(LogSentry, "sentry initialized with anonymous reports");
}
}
else
{
- ZEN_WARN(
+ ZEN_LOG_WARN(
+ LogSentry,
"sentry_init returned failure! (error code: {}) note that sentry expects crashpad_handler to exist alongside the running "
"executable",
m_SentryErrorCode);