Skip to content

Commit a25dbd0

Browse files
authored
feat: add diagnostics level (#287)
* add diagnosticLevel option * update tests * update CHANGELOG * update * update diagnostic doc * update * update binary compat * format
1 parent abf8a8e commit a25dbd0

File tree

11 files changed

+47
-20
lines changed

11 files changed

+47
-20
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Sentry.init { options ->
1414
```
1515
- Add `Sentry.isEnabled()` API to common code ([#273](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/273))
1616
- Add `enableWatchdogTerminationTracking` in common options ([#281](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/281))
17+
- Add `diagnosticLevel` in common options ([#287](https://github.com/getsentry/sentry-kotlin-multiplatform/pull/287))
1718

1819
### Dependencies
1920

sentry-kotlin-multiplatform/api/android/sentry-kotlin-multiplatform.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ public class io/sentry/kotlin/multiplatform/SentryOptions {
169169
public final fun getBeforeBreadcrumb ()Lkotlin/jvm/functions/Function1;
170170
public final fun getBeforeSend ()Lkotlin/jvm/functions/Function1;
171171
public final fun getDebug ()Z
172+
public final fun getDiagnosticLevel ()Lio/sentry/kotlin/multiplatform/SentryLevel;
172173
public final fun getDist ()Ljava/lang/String;
173174
public final fun getDsn ()Ljava/lang/String;
174175
public final fun getEnableAppHangTracking ()Z
@@ -197,6 +198,7 @@ public class io/sentry/kotlin/multiplatform/SentryOptions {
197198
public final fun setBeforeBreadcrumb (Lkotlin/jvm/functions/Function1;)V
198199
public final fun setBeforeSend (Lkotlin/jvm/functions/Function1;)V
199200
public final fun setDebug (Z)V
201+
public final fun setDiagnosticLevel (Lio/sentry/kotlin/multiplatform/SentryLevel;)V
200202
public final fun setDist (Ljava/lang/String;)V
201203
public final fun setDsn (Ljava/lang/String;)V
202204
public final fun setEnableAppHangTracking (Z)V

sentry-kotlin-multiplatform/api/jvm/sentry-kotlin-multiplatform.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ public class io/sentry/kotlin/multiplatform/SentryOptions {
166166
public final fun getBeforeBreadcrumb ()Lkotlin/jvm/functions/Function1;
167167
public final fun getBeforeSend ()Lkotlin/jvm/functions/Function1;
168168
public final fun getDebug ()Z
169+
public final fun getDiagnosticLevel ()Lio/sentry/kotlin/multiplatform/SentryLevel;
169170
public final fun getDist ()Ljava/lang/String;
170171
public final fun getDsn ()Ljava/lang/String;
171172
public final fun getEnableAppHangTracking ()Z
@@ -194,6 +195,7 @@ public class io/sentry/kotlin/multiplatform/SentryOptions {
194195
public final fun setBeforeBreadcrumb (Lkotlin/jvm/functions/Function1;)V
195196
public final fun setBeforeSend (Lkotlin/jvm/functions/Function1;)V
196197
public final fun setDebug (Z)V
198+
public final fun setDiagnosticLevel (Lio/sentry/kotlin/multiplatform/SentryLevel;)V
197199
public final fun setDist (Ljava/lang/String;)V
198200
public final fun setDsn (Ljava/lang/String;)V
199201
public final fun setEnableAppHangTracking (Z)V

sentry-kotlin-multiplatform/src/androidUnitTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.android.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package io.sentry.kotlin.multiplatform
22

33
import io.sentry.android.core.SentryAndroidOptions
44
import io.sentry.kotlin.multiplatform.extensions.toAndroidSentryOptionsCallback
5+
import io.sentry.kotlin.multiplatform.extensions.toKmpSentryLevel
56
import io.sentry.kotlin.multiplatform.utils.fakeDsn
67
import kotlin.test.assertContains
78
import kotlin.test.assertEquals
@@ -30,6 +31,9 @@ class SentryAndroidOptionsWrapper(private val androidOptions: SentryAndroidOptio
3031
override val debug: Boolean
3132
get() = androidOptions.isDebug
3233

34+
override val diagnosticLevel: SentryLevel
35+
get() = androidOptions.diagnosticLevel.toKmpSentryLevel()!!
36+
3337
override val environment: String?
3438
get() = androidOptions.environment
3539

sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.apple.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ internal fun CocoaSentryOptions.applyCocoaBaseOptions(kmpOptions: SentryOptions)
3232
cocoaOptions.enableAppHangTracking = kmpOptions.enableAppHangTracking
3333
cocoaOptions.enableWatchdogTerminationTracking = kmpOptions.enableWatchdogTerminationTracking
3434
cocoaOptions.appHangTimeoutInterval = kmpOptions.appHangTimeoutIntervalMillis.toDouble()
35+
cocoaOptions.diagnosticLevel = kmpOptions.diagnosticLevel.toCocoaSentryLevel()
3536
kmpOptions.sampleRate?.let {
3637
cocoaOptions.sampleRate = NSNumber(double = it)
3738
}

sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.apple.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.sentry.kotlin.multiplatform
22

33
import io.sentry.kotlin.multiplatform.extensions.toCocoaOptionsConfiguration
4+
import io.sentry.kotlin.multiplatform.extensions.toKmpSentryLevel
45
import io.sentry.kotlin.multiplatform.utils.fakeDsn
56
import kotlinx.cinterop.convert
67
import kotlin.test.assertEquals
@@ -50,6 +51,9 @@ open class SentryAppleOptionsWrapper(private val cocoaOptions: CocoaSentryOption
5051
override val enableWatchdogTerminationTracking: Boolean
5152
get() = cocoaOptions.enableWatchdogTerminationTracking
5253

54+
override val diagnosticLevel: SentryLevel
55+
get() = cocoaOptions.diagnosticLevel.toKmpSentryLevel()!!
56+
5357
override fun applyFromOptions(options: SentryOptions) {
5458
options.toCocoaOptionsConfiguration().invoke(cocoaOptions)
5559
}

sentry-kotlin-multiplatform/src/commonJvmMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryOptionsExtensions.jvm.kt

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,32 +16,34 @@ internal fun SentryOptions.toJvmSentryOptionsCallback(): (JvmSentryOptions) -> U
1616
* Applies the given base SentryOptions to this JvmSentryOption
1717
* This avoids code duplication during init on Android
1818
*/
19-
internal fun JvmSentryOptions.applyJvmBaseOptions(options: SentryOptions) {
20-
dsn = options.dsn
21-
isAttachThreads = options.attachThreads
22-
isAttachStacktrace = options.attachStackTrace
23-
dist = options.dist
24-
environment = options.environment
25-
release = options.release
26-
isDebug = options.debug
27-
sessionTrackingIntervalMillis = options.sessionTrackingIntervalMillis
28-
isEnableAutoSessionTracking = options.enableAutoSessionTracking
29-
maxAttachmentSize = options.maxAttachmentSize
30-
maxBreadcrumbs = options.maxBreadcrumbs
31-
sampleRate = options.sampleRate
32-
tracesSampleRate = options.tracesSampleRate
33-
setBeforeBreadcrumb { jvmBreadcrumb, _ ->
34-
if (options.beforeBreadcrumb == null) {
19+
internal fun JvmSentryOptions.applyJvmBaseOptions(kmpOptions: SentryOptions) {
20+
val jvmOptions = this
21+
jvmOptions.dsn = kmpOptions.dsn
22+
jvmOptions.isAttachThreads = kmpOptions.attachThreads
23+
jvmOptions.isAttachStacktrace = kmpOptions.attachStackTrace
24+
jvmOptions.dist = kmpOptions.dist
25+
jvmOptions.environment = kmpOptions.environment
26+
jvmOptions.release = kmpOptions.release
27+
jvmOptions.isDebug = kmpOptions.debug
28+
jvmOptions.sessionTrackingIntervalMillis = kmpOptions.sessionTrackingIntervalMillis
29+
jvmOptions.isEnableAutoSessionTracking = kmpOptions.enableAutoSessionTracking
30+
jvmOptions.maxAttachmentSize = kmpOptions.maxAttachmentSize
31+
jvmOptions.maxBreadcrumbs = kmpOptions.maxBreadcrumbs
32+
jvmOptions.sampleRate = kmpOptions.sampleRate
33+
jvmOptions.tracesSampleRate = kmpOptions.tracesSampleRate
34+
jvmOptions.setDiagnosticLevel(kmpOptions.diagnosticLevel.toJvmSentryLevel())
35+
jvmOptions.setBeforeBreadcrumb { jvmBreadcrumb, _ ->
36+
if (kmpOptions.beforeBreadcrumb == null) {
3537
jvmBreadcrumb
3638
} else {
37-
options.beforeBreadcrumb?.invoke(jvmBreadcrumb.toKmpBreadcrumb())?.toJvmBreadcrumb()
39+
kmpOptions.beforeBreadcrumb?.invoke(jvmBreadcrumb.toKmpBreadcrumb())?.toJvmBreadcrumb()
3840
}
3941
}
40-
setBeforeSend { jvmSentryEvent, hint ->
41-
if (options.beforeSend == null) {
42+
jvmOptions.setBeforeSend { jvmSentryEvent, hint ->
43+
if (kmpOptions.beforeSend == null) {
4244
jvmSentryEvent
4345
} else {
44-
options.beforeSend?.invoke(SentryEvent(jvmSentryEvent))?.let {
46+
kmpOptions.beforeSend?.invoke(SentryEvent(jvmSentryEvent))?.let {
4547
jvmSentryEvent.applyKmpEvent(it)
4648
}
4749
}

sentry-kotlin-multiplatform/src/commonMain/kotlin/io/sentry/kotlin/multiplatform/SentryOptions.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ public open class SentryOptions {
7070
/** Information about the Sentry SDK that generated this event. */
7171
public var sdk: SdkVersion? = null
7272

73+
/** Sets the minimum log level. Default is [SentryLevel.DEBUG] */
74+
public var diagnosticLevel: SentryLevel = SentryLevel.DEBUG
75+
7376
/** This variable controls the total amount of breadcrumbs that should be captured. Default is 100. */
7477
public var maxBreadcrumbs: Int = DEFAULT_MAX_BREADCRUMBS
7578

sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/PlatformOptions.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ interface CommonPlatformOptions {
66
val release: String?
77
val debug: Boolean
88
val environment: String?
9+
val diagnosticLevel: SentryLevel
910
val dist: String?
1011
val enableAutoSessionTracking: Boolean
1112
val sessionTrackingIntervalMillis: Long

sentry-kotlin-multiplatform/src/commonTest/kotlin/io/sentry/kotlin/multiplatform/SentryOptionsTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ class SentryOptionsTest : BaseSentryTest() {
114114
assertNull(options.beforeBreadcrumb)
115115
assertNull(options.beforeSend)
116116
assertNull(options.sdk)
117+
assertEquals(SentryLevel.DEBUG, options.diagnosticLevel)
117118
assertEquals(DEFAULT_MAX_BREADCRUMBS, options.maxBreadcrumbs)
118119
assertEquals(DEFAULT_MAX_ATTACHMENT_SIZE, options.maxAttachmentSize)
119120
assertFalse(options.attachViewHierarchy)
@@ -145,6 +146,7 @@ class SentryOptionsTest : BaseSentryTest() {
145146
dist = "dist"
146147
enableAutoSessionTracking = false
147148
sessionTrackingIntervalMillis = 1000L
149+
diagnosticLevel = SentryLevel.ERROR
148150
maxBreadcrumbs = 10
149151
maxAttachmentSize = 100L
150152
sampleRate = 0.5
@@ -178,6 +180,7 @@ class SentryOptionsTest : BaseSentryTest() {
178180
assertEquals(100L, platformOptions.maxAttachmentSize)
179181
assertEquals(0.5, platformOptions.sampleRate)
180182
assertEquals(0.5, platformOptions.tracesSampleRate)
183+
assertEquals(SentryLevel.ERROR, platformOptions.diagnosticLevel)
181184

182185
platformOptions.assertPlatformSpecificOptions(options)
183186
}

0 commit comments

Comments
 (0)