Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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 @@ -9,6 +9,7 @@
### Improvements

- [ANR] Defer some class availability checks ([#4825](https://github.com/getsentry/sentry-java/pull/4825))
- Report Timber.tag() as `timber.tag` log attribute ([#4845](https://github.com/getsentry/sentry-java/pull/4845))

### Dependencies

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)) }
Comment thread
markushi marked this conversation as resolved.
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 @@ -334,8 +334,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