diff --git a/CHANGELOG.md b/CHANGELOG.md index 0daaa95922e..ed643ca30e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Improvements - Fallback to distinct-id as user.id logging attribute when user is not set ([#4847](https://github.com/getsentry/sentry-java/pull/4847)) +- Report Timber.tag() as `timber.tag` log attribute ([#4845](https://github.com/getsentry/sentry-java/pull/4845)) ## 8.25.0 diff --git a/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberTree.kt b/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberTree.kt index caca9aa8228..9c87c8a461d 100644 --- a/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberTree.kt +++ b/sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberTree.kt @@ -3,6 +3,8 @@ package io.sentry.android.timber import android.util.Log import io.sentry.Breadcrumb import io.sentry.IScopes +import io.sentry.SentryAttribute +import io.sentry.SentryAttributes import io.sentry.SentryEvent import io.sentry.SentryLevel import io.sentry.SentryLogLevel @@ -183,7 +185,7 @@ public class SentryTimberTree( captureEvent(level, tag, sentryMessage, throwable) addBreadcrumb(level, sentryMessage, throwable) - addLog(logLevel, message, throwable, *args) + addLog(logLevel, message, tag, throwable, *args) } /** do not log if it's lower than min. required level. */ @@ -240,12 +242,15 @@ public class SentryTimberTree( private fun addLog( sentryLogLevel: SentryLogLevel, msg: String?, + tag: String?, throwable: Throwable?, vararg args: Any?, ) { // checks the log level if (isLoggable(sentryLogLevel, minLogLevel)) { - val params = SentryLogParameters() + val attributes = + tag?.let { SentryAttributes.of(SentryAttribute.stringAttribute("timber.tag", tag)) } + val params = SentryLogParameters.create(attributes) params.origin = "auto.log.timber" val throwableMsg = throwable?.message diff --git a/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberTreeTest.kt b/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberTreeTest.kt index 37b8894dcc5..f1d6d5a51bd 100644 --- a/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberTreeTest.kt +++ b/sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberTreeTest.kt @@ -386,8 +386,28 @@ class SentryTimberTreeTest { verify(fixture.logs) .log( eq(SentryLogLevel.ERROR), - check { assertEquals("auto.log.timber", it.origin) }, + check { + assertEquals("auto.log.timber", it.origin) + assertEquals(null, it.attributes?.attributes?.get("timber.tag")) + }, eq("My message\nthrowable message"), ) } + + @Test + fun `Tree logs timber tag`() { + val sut = fixture.getSut() + Timber.plant(sut) + Timber.tag("timberTag").i("message") + + verify(fixture.logs) + .log( + eq(SentryLogLevel.INFO), + check { + assertEquals("auto.log.timber", it.origin) + assertEquals("timberTag", it.attributes?.attributes?.get("timber.tag")?.value) + }, + eq("message"), + ) + } }