Skip to content

Commit 0627186

Browse files
committed
Add Log feature to Java SDK
1 parent 1beb349 commit 0627186

26 files changed

+933
-15
lines changed

sentry-android-core/src/test/java/io/sentry/android/core/SessionTrackingIntegrationTest.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import io.sentry.ProfilingTraceData
1616
import io.sentry.Sentry
1717
import io.sentry.SentryEnvelope
1818
import io.sentry.SentryEvent
19+
import io.sentry.SentryLogEvents
1920
import io.sentry.SentryOptions
2021
import io.sentry.SentryReplayEvent
2122
import io.sentry.Session
@@ -185,6 +186,10 @@ class SessionTrackingIntegrationTest {
185186
TODO("Not yet implemented")
186187
}
187188

189+
override fun captureLogs(events: SentryLogEvents, scope: IScope?, hint: Hint?) {
190+
TODO("Not yet implemented")
191+
}
192+
188193
override fun getRateLimiter(): RateLimiter? {
189194
TODO("Not yet implemented")
190195
}

sentry/api/sentry.api

Lines changed: 118 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,7 @@ public final class io/sentry/DataCategory : java/lang/Enum {
370370
public final class io/sentry/DateUtils {
371371
public static fun dateToNanos (Ljava/util/Date;)J
372372
public static fun dateToSeconds (Ljava/util/Date;)D
373+
public static fun doubleToBigDecimal (Ljava/lang/Double;)Ljava/math/BigDecimal;
373374
public static fun getCurrentDateTime ()Ljava/util/Date;
374375
public static fun getDateTime (J)Ljava/util/Date;
375376
public static fun getDateTime (Ljava/lang/String;)Ljava/util/Date;
@@ -636,6 +637,7 @@ public final class io/sentry/HubAdapter : io/sentry/IHub {
636637
public fun isCrashedLastRun ()Ljava/lang/Boolean;
637638
public fun isEnabled ()Z
638639
public fun isHealthy ()Z
640+
public fun logger ()Lio/sentry/logger/ILoggerApi;
639641
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
640642
public fun popScope ()V
641643
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
@@ -703,6 +705,7 @@ public final class io/sentry/HubScopesWrapper : io/sentry/IHub {
703705
public fun isCrashedLastRun ()Ljava/lang/Boolean;
704706
public fun isEnabled ()Z
705707
public fun isHealthy ()Z
708+
public fun logger ()Lio/sentry/logger/ILoggerApi;
706709
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
707710
public fun popScope ()V
708711
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
@@ -942,6 +945,7 @@ public abstract interface class io/sentry/IScopes {
942945
public abstract fun isEnabled ()Z
943946
public abstract fun isHealthy ()Z
944947
public fun isNoOp ()Z
948+
public abstract fun logger ()Lio/sentry/logger/ILoggerApi;
945949
public abstract fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
946950
public abstract fun popScope ()V
947951
public abstract fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
@@ -987,6 +991,7 @@ public abstract interface class io/sentry/ISentryClient {
987991
public fun captureException (Ljava/lang/Throwable;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
988992
public fun captureException (Ljava/lang/Throwable;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
989993
public fun captureException (Ljava/lang/Throwable;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
994+
public abstract fun captureLogs (Lio/sentry/SentryLogEvents;Lio/sentry/IScope;Lio/sentry/Hint;)V
990995
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
991996
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
992997
public abstract fun captureProfileChunk (Lio/sentry/ProfileChunk;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
@@ -1504,6 +1509,7 @@ public final class io/sentry/NoOpHub : io/sentry/IHub {
15041509
public fun isEnabled ()Z
15051510
public fun isHealthy ()Z
15061511
public fun isNoOp ()Z
1512+
public fun logger ()Lio/sentry/logger/ILoggerApi;
15071513
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
15081514
public fun popScope ()V
15091515
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
@@ -1666,6 +1672,7 @@ public final class io/sentry/NoOpScopes : io/sentry/IScopes {
16661672
public fun isEnabled ()Z
16671673
public fun isHealthy ()Z
16681674
public fun isNoOp ()Z
1675+
public fun logger ()Lio/sentry/logger/ILoggerApi;
16691676
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
16701677
public fun popScope ()V
16711678
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
@@ -2347,6 +2354,8 @@ public final class io/sentry/Scopes : io/sentry/IScopes {
23472354
public fun forkedRootScopes (Ljava/lang/String;)Lio/sentry/IScopes;
23482355
public fun forkedScopes (Ljava/lang/String;)Lio/sentry/IScopes;
23492356
public fun getBaggage ()Lio/sentry/BaggageHeader;
2357+
public fun getClient ()Lio/sentry/ISentryClient;
2358+
public fun getCombinedScopeView ()Lio/sentry/IScope;
23502359
public fun getCreator ()Ljava/lang/String;
23512360
public fun getGlobalScope ()Lio/sentry/IScope;
23522361
public fun getIsolationScope ()Lio/sentry/IScope;
@@ -2362,6 +2371,7 @@ public final class io/sentry/Scopes : io/sentry/IScopes {
23622371
public fun isCrashedLastRun ()Ljava/lang/Boolean;
23632372
public fun isEnabled ()Z
23642373
public fun isHealthy ()Z
2374+
public fun logger ()Lio/sentry/logger/ILoggerApi;
23652375
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
23662376
public fun popScope ()V
23672377
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
@@ -2429,6 +2439,7 @@ public final class io/sentry/ScopesAdapter : io/sentry/IScopes {
24292439
public fun isCrashedLastRun ()Ljava/lang/Boolean;
24302440
public fun isEnabled ()Z
24312441
public fun isHealthy ()Z
2442+
public fun logger ()Lio/sentry/logger/ILoggerApi;
24322443
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
24332444
public fun popScope ()V
24342445
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
@@ -2536,6 +2547,7 @@ public final class io/sentry/Sentry {
25362547
public static fun isCrashedLastRun ()Ljava/lang/Boolean;
25372548
public static fun isEnabled ()Z
25382549
public static fun isHealthy ()Z
2550+
public static fun logger ()Lio/sentry/logger/ILoggerApi;
25392551
public static fun popScope ()V
25402552
public static fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
25412553
public static fun pushScope ()Lio/sentry/ISentryLifecycleToken;
@@ -2702,6 +2714,7 @@ public final class io/sentry/SentryClient : io/sentry/ISentryClient {
27022714
public fun captureCheckIn (Lio/sentry/CheckIn;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
27032715
public fun captureEnvelope (Lio/sentry/SentryEnvelope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
27042716
public fun captureEvent (Lio/sentry/SentryEvent;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
2717+
public fun captureLogs (Lio/sentry/SentryLogEvents;Lio/sentry/IScope;Lio/sentry/Hint;)V
27052718
public fun captureProfileChunk (Lio/sentry/ProfileChunk;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
27062719
public fun captureReplayEvent (Lio/sentry/SentryReplayEvent;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
27072720
public fun captureSession (Lio/sentry/Session;Lio/sentry/Hint;)V
@@ -2782,6 +2795,7 @@ public final class io/sentry/SentryEnvelopeItem {
27822795
public static fun fromCheckIn (Lio/sentry/ISerializer;Lio/sentry/CheckIn;)Lio/sentry/SentryEnvelopeItem;
27832796
public static fun fromClientReport (Lio/sentry/ISerializer;Lio/sentry/clientreport/ClientReport;)Lio/sentry/SentryEnvelopeItem;
27842797
public static fun fromEvent (Lio/sentry/ISerializer;Lio/sentry/SentryBaseEvent;)Lio/sentry/SentryEnvelopeItem;
2798+
public static fun fromLogs (Lio/sentry/ISerializer;Lio/sentry/SentryLogEvents;)Lio/sentry/SentryEnvelopeItem;
27852799
public static fun fromProfileChunk (Lio/sentry/ProfileChunk;Lio/sentry/ISerializer;)Lio/sentry/SentryEnvelopeItem;
27862800
public static fun fromProfilingTrace (Lio/sentry/ProfilingTraceData;JLio/sentry/ISerializer;)Lio/sentry/SentryEnvelopeItem;
27872801
public static fun fromReplay (Lio/sentry/ISerializer;Lio/sentry/ILogger;Lio/sentry/SentryReplayEvent;Lio/sentry/ReplayRecording;Z)Lio/sentry/SentryEnvelopeItem;
@@ -2795,7 +2809,7 @@ public final class io/sentry/SentryEnvelopeItem {
27952809
}
27962810

27972811
public final class io/sentry/SentryEnvelopeItemHeader : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
2798-
public fun <init> (Lio/sentry/SentryItemType;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
2812+
public fun <init> (Lio/sentry/SentryItemType;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)V
27992813
public fun getAttachmentType ()Ljava/lang/String;
28002814
public fun getContentType ()Ljava/lang/String;
28012815
public fun getFileName ()Ljava/lang/String;
@@ -2817,6 +2831,7 @@ public final class io/sentry/SentryEnvelopeItemHeader$JsonKeys {
28172831
public static final field ATTACHMENT_TYPE Ljava/lang/String;
28182832
public static final field CONTENT_TYPE Ljava/lang/String;
28192833
public static final field FILENAME Ljava/lang/String;
2834+
public static final field ITEM_COUNT Ljava/lang/String;
28202835
public static final field LENGTH Ljava/lang/String;
28212836
public static final field PLATFORM Ljava/lang/String;
28222837
public static final field TYPE Ljava/lang/String;
@@ -2916,6 +2931,7 @@ public final class io/sentry/SentryItemType : java/lang/Enum, io/sentry/JsonSeri
29162931
public static final field ClientReport Lio/sentry/SentryItemType;
29172932
public static final field Event Lio/sentry/SentryItemType;
29182933
public static final field Feedback Lio/sentry/SentryItemType;
2934+
public static final field Log Lio/sentry/SentryItemType;
29192935
public static final field Profile Lio/sentry/SentryItemType;
29202936
public static final field ProfileChunk Lio/sentry/SentryItemType;
29212937
public static final field ReplayEvent Lio/sentry/SentryItemType;
@@ -2996,6 +3012,72 @@ public final class io/sentry/SentryLockReason$JsonKeys {
29963012
public fun <init> ()V
29973013
}
29983014

3015+
public final class io/sentry/SentryLogEvent : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
3016+
public fun <init> (Lio/sentry/protocol/SentryId;Lio/sentry/SentryDate;Ljava/lang/String;)V
3017+
public fun <init> (Lio/sentry/protocol/SentryId;Ljava/lang/Double;Ljava/lang/String;)V
3018+
public fun getAttributes ()Ljava/util/Map;
3019+
public fun getLevel ()Lio/sentry/SentryLevel;
3020+
public fun getTimestamp ()Ljava/lang/Double;
3021+
public fun getUnknown ()Ljava/util/Map;
3022+
public fun serialize (Lio/sentry/ObjectWriter;Lio/sentry/ILogger;)V
3023+
public fun setAttributes (Ljava/util/Map;)V
3024+
public fun setLevel (Lio/sentry/SentryLevel;)V
3025+
public fun setTimestamp (Ljava/lang/Double;)V
3026+
public fun setUnknown (Ljava/util/Map;)V
3027+
}
3028+
3029+
public final class io/sentry/SentryLogEvent$Deserializer : io/sentry/JsonDeserializer {
3030+
public fun <init> ()V
3031+
public fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Lio/sentry/SentryLogEvent;
3032+
public synthetic fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Ljava/lang/Object;
3033+
}
3034+
3035+
public final class io/sentry/SentryLogEvent$JsonKeys {
3036+
public static final field ATTRIBUTES Ljava/lang/String;
3037+
public static final field BODY Ljava/lang/String;
3038+
public static final field LEVEL Ljava/lang/String;
3039+
public static final field TIMESTAMP Ljava/lang/String;
3040+
public static final field TRACE_ID Ljava/lang/String;
3041+
public fun <init> ()V
3042+
}
3043+
3044+
public final class io/sentry/SentryLogEventAttributeValue : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
3045+
public fun <init> (Ljava/lang/String;Ljava/lang/Object;)V
3046+
public fun getUnknown ()Ljava/util/Map;
3047+
public fun serialize (Lio/sentry/ObjectWriter;Lio/sentry/ILogger;)V
3048+
public fun setUnknown (Ljava/util/Map;)V
3049+
}
3050+
3051+
public final class io/sentry/SentryLogEventAttributeValue$Deserializer : io/sentry/JsonDeserializer {
3052+
public fun <init> ()V
3053+
public fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Lio/sentry/SentryLogEventAttributeValue;
3054+
public synthetic fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Ljava/lang/Object;
3055+
}
3056+
3057+
public final class io/sentry/SentryLogEventAttributeValue$JsonKeys {
3058+
public static final field TYPE Ljava/lang/String;
3059+
public static final field VALUE Ljava/lang/String;
3060+
public fun <init> ()V
3061+
}
3062+
3063+
public final class io/sentry/SentryLogEvents : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
3064+
public fun <init> (Ljava/util/List;)V
3065+
public fun getUnknown ()Ljava/util/Map;
3066+
public fun serialize (Lio/sentry/ObjectWriter;Lio/sentry/ILogger;)V
3067+
public fun setUnknown (Ljava/util/Map;)V
3068+
}
3069+
3070+
public final class io/sentry/SentryLogEvents$Deserializer : io/sentry/JsonDeserializer {
3071+
public fun <init> ()V
3072+
public fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Lio/sentry/SentryLogEvents;
3073+
public synthetic fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Ljava/lang/Object;
3074+
}
3075+
3076+
public final class io/sentry/SentryLogEvents$JsonKeys {
3077+
public static final field ITEMS Ljava/lang/String;
3078+
public fun <init> ()V
3079+
}
3080+
29993081
public final class io/sentry/SentryLongDate : io/sentry/SentryDate {
30003082
public fun <init> (J)V
30013083
public fun nanoTimestamp ()J
@@ -4550,6 +4632,41 @@ public abstract interface class io/sentry/internal/viewhierarchy/ViewHierarchyEx
45504632
public abstract fun export (Lio/sentry/protocol/ViewHierarchyNode;Ljava/lang/Object;)Z
45514633
}
45524634

4635+
public abstract interface class io/sentry/logger/ILoggerApi {
4636+
public abstract fun debug (Ljava/lang/String;[Ljava/lang/Object;)V
4637+
public abstract fun error (Ljava/lang/String;[Ljava/lang/Object;)V
4638+
public abstract fun fatal (Ljava/lang/String;[Ljava/lang/Object;)V
4639+
public abstract fun info (Ljava/lang/String;[Ljava/lang/Object;)V
4640+
public abstract fun log (Lio/sentry/SentryLevel;Lio/sentry/SentryDate;Ljava/lang/String;Lio/sentry/Hint;[Ljava/lang/Object;)V
4641+
public abstract fun log (Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
4642+
public abstract fun trace (Ljava/lang/String;[Ljava/lang/Object;)V
4643+
public abstract fun warn (Ljava/lang/String;[Ljava/lang/Object;)V
4644+
}
4645+
4646+
public final class io/sentry/logger/LoggerApi : io/sentry/logger/ILoggerApi {
4647+
public fun <init> (Lio/sentry/Scopes;)V
4648+
public fun debug (Ljava/lang/String;[Ljava/lang/Object;)V
4649+
public fun error (Ljava/lang/String;[Ljava/lang/Object;)V
4650+
public fun fatal (Ljava/lang/String;[Ljava/lang/Object;)V
4651+
public fun info (Ljava/lang/String;[Ljava/lang/Object;)V
4652+
public fun log (Lio/sentry/SentryLevel;Lio/sentry/SentryDate;Ljava/lang/String;Lio/sentry/Hint;[Ljava/lang/Object;)V
4653+
public fun log (Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
4654+
public fun trace (Ljava/lang/String;[Ljava/lang/Object;)V
4655+
public fun warn (Ljava/lang/String;[Ljava/lang/Object;)V
4656+
}
4657+
4658+
public final class io/sentry/logger/NoOpLoggerApi : io/sentry/logger/ILoggerApi {
4659+
public fun debug (Ljava/lang/String;[Ljava/lang/Object;)V
4660+
public fun error (Ljava/lang/String;[Ljava/lang/Object;)V
4661+
public fun fatal (Ljava/lang/String;[Ljava/lang/Object;)V
4662+
public static fun getInstance ()Lio/sentry/logger/NoOpLoggerApi;
4663+
public fun info (Ljava/lang/String;[Ljava/lang/Object;)V
4664+
public fun log (Lio/sentry/SentryLevel;Lio/sentry/SentryDate;Ljava/lang/String;Lio/sentry/Hint;[Ljava/lang/Object;)V
4665+
public fun log (Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
4666+
public fun trace (Ljava/lang/String;[Ljava/lang/Object;)V
4667+
public fun warn (Ljava/lang/String;[Ljava/lang/Object;)V
4668+
}
4669+
45534670
public final class io/sentry/opentelemetry/OpenTelemetryUtil {
45544671
public fun <init> ()V
45554672
public static fun applyIgnoredSpanOrigins (Lio/sentry/SentryOptions;)V

sentry/src/main/java/io/sentry/DateUtils.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,4 +165,8 @@ public static long dateToNanos(final @NotNull Date date) {
165165
public static long secondsToNanos(final @NotNull long seconds) {
166166
return seconds * (1000L * 1000L * 1000L);
167167
}
168+
169+
public static @NotNull BigDecimal doubleToBigDecimal(final @NotNull Double value) {
170+
return BigDecimal.valueOf(value).setScale(6, RoundingMode.DOWN);
171+
}
168172
}

sentry/src/main/java/io/sentry/HubAdapter.java

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

3+
import io.sentry.logger.ILoggerApi;
34
import io.sentry.protocol.SentryId;
45
import io.sentry.protocol.SentryTransaction;
56
import io.sentry.protocol.User;
@@ -365,4 +366,10 @@ public void reportFullyDisplayed() {
365366
public @Nullable RateLimiter getRateLimiter() {
366367
return Sentry.getCurrentScopes().getRateLimiter();
367368
}
369+
370+
@ApiStatus.Experimental
371+
@Override
372+
public @NotNull ILoggerApi logger() {
373+
return Sentry.getCurrentScopes().logger();
374+
}
368375
}

sentry/src/main/java/io/sentry/HubScopesWrapper.java

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

3+
import io.sentry.logger.ILoggerApi;
34
import io.sentry.protocol.SentryId;
45
import io.sentry.protocol.SentryTransaction;
56
import io.sentry.protocol.User;
@@ -357,4 +358,10 @@ public void reportFullyDisplayed() {
357358
public @NotNull SentryId captureReplay(@NotNull SentryReplayEvent replay, @Nullable Hint hint) {
358359
return scopes.captureReplay(replay, hint);
359360
}
361+
362+
@ApiStatus.Experimental
363+
@Override
364+
public @NotNull ILoggerApi logger() {
365+
return scopes.logger();
366+
}
360367
}

sentry/src/main/java/io/sentry/IScopes.java

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

3+
import io.sentry.logger.ILoggerApi;
34
import io.sentry.protocol.SentryId;
45
import io.sentry.protocol.SentryTransaction;
56
import io.sentry.protocol.User;
@@ -703,4 +704,8 @@ default boolean isNoOp() {
703704

704705
@NotNull
705706
SentryId captureReplay(@NotNull SentryReplayEvent replay, @Nullable Hint hint);
707+
708+
@ApiStatus.Experimental
709+
@NotNull
710+
ILoggerApi logger();
706711
}

sentry/src/main/java/io/sentry/ISentryClient.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,9 @@ SentryId captureProfileChunk(
292292
@ApiStatus.Experimental
293293
SentryId captureCheckIn(@NotNull CheckIn checkIn, @Nullable IScope scope, @Nullable Hint hint);
294294

295+
@ApiStatus.Experimental
296+
void captureLogs(@NotNull SentryLogEvents logEvents, @Nullable IScope scope, @Nullable Hint hint);
297+
295298
@ApiStatus.Internal
296299
@Nullable
297300
RateLimiter getRateLimiter();

sentry/src/main/java/io/sentry/NoOpHub.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.sentry;
22

3+
import io.sentry.logger.ILoggerApi;
4+
import io.sentry.logger.NoOpLoggerApi;
35
import io.sentry.protocol.SentryId;
46
import io.sentry.protocol.SentryTransaction;
57
import io.sentry.protocol.User;
@@ -317,4 +319,10 @@ public void reportFullyDisplayed() {}
317319
public boolean isNoOp() {
318320
return true;
319321
}
322+
323+
@ApiStatus.Experimental
324+
@Override
325+
public @NotNull ILoggerApi logger() {
326+
return NoOpLoggerApi.getInstance();
327+
}
320328
}

sentry/src/main/java/io/sentry/NoOpScopes.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.sentry;
22

3+
import io.sentry.logger.ILoggerApi;
4+
import io.sentry.logger.NoOpLoggerApi;
35
import io.sentry.protocol.SentryId;
46
import io.sentry.protocol.SentryTransaction;
57
import io.sentry.protocol.User;
@@ -312,4 +314,10 @@ public boolean isNoOp() {
312314
public @NotNull SentryId captureReplay(@NotNull SentryReplayEvent replay, @Nullable Hint hint) {
313315
return SentryId.EMPTY_ID;
314316
}
317+
318+
@ApiStatus.Experimental
319+
@Override
320+
public @NotNull ILoggerApi logger() {
321+
return NoOpLoggerApi.getInstance();
322+
}
315323
}

sentry/src/main/java/io/sentry/NoOpSentryClient.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@ public SentryId captureEnvelope(@NotNull SentryEnvelope envelope, @Nullable Hint
7777
return SentryId.EMPTY_ID;
7878
}
7979

80+
@ApiStatus.Experimental
81+
@Override
82+
public void captureLogs(
83+
@NotNull SentryLogEvents logEvents, @Nullable IScope scope, @Nullable Hint hint) {
84+
// do nothing
85+
}
86+
8087
@Override
8188
public @Nullable RateLimiter getRateLimiter() {
8289
return null;

0 commit comments

Comments
 (0)