Skip to content

Commit 03dca4e

Browse files
authored
feat(logging): Log Timber tag as log attribute (#4845)
* Log timber tag as attribute * Update Changelog * Update Changelog
1 parent fcec2f2 commit 03dca4e

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### Improvements
66

77
- Fallback to distinct-id as user.id logging attribute when user is not set ([#4847](https://github.com/getsentry/sentry-java/pull/4847))
8+
- Report Timber.tag() as `timber.tag` log attribute ([#4845](https://github.com/getsentry/sentry-java/pull/4845))
89

910
## 8.25.0
1011

sentry-android-timber/src/main/java/io/sentry/android/timber/SentryTimberTree.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package io.sentry.android.timber
33
import android.util.Log
44
import io.sentry.Breadcrumb
55
import io.sentry.IScopes
6+
import io.sentry.SentryAttribute
7+
import io.sentry.SentryAttributes
68
import io.sentry.SentryEvent
79
import io.sentry.SentryLevel
810
import io.sentry.SentryLogLevel
@@ -183,7 +185,7 @@ public class SentryTimberTree(
183185

184186
captureEvent(level, tag, sentryMessage, throwable)
185187
addBreadcrumb(level, sentryMessage, throwable)
186-
addLog(logLevel, message, throwable, *args)
188+
addLog(logLevel, message, tag, throwable, *args)
187189
}
188190

189191
/** do not log if it's lower than min. required level. */
@@ -240,12 +242,15 @@ public class SentryTimberTree(
240242
private fun addLog(
241243
sentryLogLevel: SentryLogLevel,
242244
msg: String?,
245+
tag: String?,
243246
throwable: Throwable?,
244247
vararg args: Any?,
245248
) {
246249
// checks the log level
247250
if (isLoggable(sentryLogLevel, minLogLevel)) {
248-
val params = SentryLogParameters()
251+
val attributes =
252+
tag?.let { SentryAttributes.of(SentryAttribute.stringAttribute("timber.tag", tag)) }
253+
val params = SentryLogParameters.create(attributes)
249254
params.origin = "auto.log.timber"
250255

251256
val throwableMsg = throwable?.message

sentry-android-timber/src/test/java/io/sentry/android/timber/SentryTimberTreeTest.kt

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,8 +386,28 @@ class SentryTimberTreeTest {
386386
verify(fixture.logs)
387387
.log(
388388
eq(SentryLogLevel.ERROR),
389-
check<SentryLogParameters> { assertEquals("auto.log.timber", it.origin) },
389+
check<SentryLogParameters> {
390+
assertEquals("auto.log.timber", it.origin)
391+
assertEquals(null, it.attributes?.attributes?.get("timber.tag"))
392+
},
390393
eq("My message\nthrowable message"),
391394
)
392395
}
396+
397+
@Test
398+
fun `Tree logs timber tag`() {
399+
val sut = fixture.getSut()
400+
Timber.plant(sut)
401+
Timber.tag("timberTag").i("message")
402+
403+
verify(fixture.logs)
404+
.log(
405+
eq(SentryLogLevel.INFO),
406+
check<SentryLogParameters> {
407+
assertEquals("auto.log.timber", it.origin)
408+
assertEquals("timberTag", it.attributes?.attributes?.get("timber.tag")?.value)
409+
},
410+
eq("message"),
411+
)
412+
}
393413
}

0 commit comments

Comments
 (0)