Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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. */
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -386,8 +386,28 @@ class SentryTimberTreeTest {
verify(fixture.logs)
.log(
eq(SentryLogLevel.ERROR),
check<SentryLogParameters> { assertEquals("auto.log.timber", it.origin) },
check<SentryLogParameters> {
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<SentryLogParameters> {
assertEquals("auto.log.timber", it.origin)
assertEquals("timberTag", it.attributes?.attributes?.get("timber.tag")?.value)
},
eq("message"),
)
}
}
Loading