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
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,16 @@

- Add new User Feedback API ([#4286](https://github.com/getsentry/sentry-java/pull/4286))
- We now introduced Sentry.captureFeedback, which supersedes Sentry.captureUserFeedback
- Add Sentry Log Feature ([#4372](https://github.com/getsentry/sentry-java/pull/4372))
- The feature is disabled by default and needs to be enabled by:
- `options.getLogs().setEnabled(true)` in `Sentry.init` / `SentryAndroid.init`
- `<meta-data android:name="io.sentry.logs.enabled" android:value="true" />` in `AndroidManifest.xml`
- `logs.enabled=true` in `sentry.properties`
- `sentry.logs.enabled=true` in `application.properties`
- `sentry.logs.enabled: true` in `application.yml`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

manifest or no manifest? 👀

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yeah we should add it to manifest as well.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added in #4395

- Logs can be captured using `Sentry.logger().info()` and similar methods.
- Logs also take a format string and arguments which we then send through `String.format`.
- Please use `options.getLogs().setBeforeSend()` to filter outgoing logs

### Fixes

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import io.sentry.ProfilingTraceData
import io.sentry.Sentry
import io.sentry.SentryEnvelope
import io.sentry.SentryEvent
import io.sentry.SentryLogEvents
import io.sentry.SentryOptions
import io.sentry.SentryReplayEvent
import io.sentry.Session
Expand Down Expand Up @@ -190,6 +191,10 @@ class SessionTrackingIntegrationTest {
TODO("Not yet implemented")
}

override fun captureLogs(events: SentryLogEvents, scope: IScope?, hint: Hint?) {
TODO("Not yet implemented")
}

override fun getRateLimiter(): RateLimiter? {
TODO("Not yet implemented")
}
Expand Down
119 changes: 118 additions & 1 deletion sentry/api/sentry.api
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,7 @@ public final class io/sentry/DataCategory : java/lang/Enum {
public final class io/sentry/DateUtils {
public static fun dateToNanos (Ljava/util/Date;)J
public static fun dateToSeconds (Ljava/util/Date;)D
public static fun doubleToBigDecimal (Ljava/lang/Double;)Ljava/math/BigDecimal;
public static fun getCurrentDateTime ()Ljava/util/Date;
public static fun getDateTime (J)Ljava/util/Date;
public static fun getDateTime (Ljava/lang/String;)Ljava/util/Date;
Expand Down Expand Up @@ -640,6 +641,7 @@ public final class io/sentry/HubAdapter : io/sentry/IHub {
public fun isCrashedLastRun ()Ljava/lang/Boolean;
public fun isEnabled ()Z
public fun isHealthy ()Z
public fun logger ()Lio/sentry/logger/ILoggerApi;
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
Expand Down Expand Up @@ -708,6 +710,7 @@ public final class io/sentry/HubScopesWrapper : io/sentry/IHub {
public fun isCrashedLastRun ()Ljava/lang/Boolean;
public fun isEnabled ()Z
public fun isHealthy ()Z
public fun logger ()Lio/sentry/logger/ILoggerApi;
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
Expand Down Expand Up @@ -950,6 +953,7 @@ public abstract interface class io/sentry/IScopes {
public abstract fun isEnabled ()Z
public abstract fun isHealthy ()Z
public fun isNoOp ()Z
public abstract fun logger ()Lio/sentry/logger/ILoggerApi;
public abstract fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
public abstract fun popScope ()V
public abstract fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
Expand Down Expand Up @@ -996,6 +1000,7 @@ public abstract interface class io/sentry/ISentryClient {
public fun captureException (Ljava/lang/Throwable;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public fun captureException (Ljava/lang/Throwable;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public abstract fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public abstract fun captureLogs (Lio/sentry/SentryLogEvents;Lio/sentry/IScope;Lio/sentry/Hint;)V
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;)Lio/sentry/protocol/SentryId;
public fun captureMessage (Ljava/lang/String;Lio/sentry/SentryLevel;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public abstract fun captureProfileChunk (Lio/sentry/ProfileChunk;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
Expand Down Expand Up @@ -1514,6 +1519,7 @@ public final class io/sentry/NoOpHub : io/sentry/IHub {
public fun isEnabled ()Z
public fun isHealthy ()Z
public fun isNoOp ()Z
public fun logger ()Lio/sentry/logger/ILoggerApi;
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
Expand Down Expand Up @@ -1677,6 +1683,7 @@ public final class io/sentry/NoOpScopes : io/sentry/IScopes {
public fun isEnabled ()Z
public fun isHealthy ()Z
public fun isNoOp ()Z
public fun logger ()Lio/sentry/logger/ILoggerApi;
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
Expand Down Expand Up @@ -2359,6 +2366,8 @@ public final class io/sentry/Scopes : io/sentry/IScopes {
public fun forkedRootScopes (Ljava/lang/String;)Lio/sentry/IScopes;
public fun forkedScopes (Ljava/lang/String;)Lio/sentry/IScopes;
public fun getBaggage ()Lio/sentry/BaggageHeader;
public fun getClient ()Lio/sentry/ISentryClient;
public fun getCombinedScopeView ()Lio/sentry/IScope;
public fun getCreator ()Ljava/lang/String;
public fun getGlobalScope ()Lio/sentry/IScope;
public fun getIsolationScope ()Lio/sentry/IScope;
Expand All @@ -2374,6 +2383,7 @@ public final class io/sentry/Scopes : io/sentry/IScopes {
public fun isCrashedLastRun ()Ljava/lang/Boolean;
public fun isEnabled ()Z
public fun isHealthy ()Z
public fun logger ()Lio/sentry/logger/ILoggerApi;
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
Expand Down Expand Up @@ -2444,6 +2454,7 @@ public final class io/sentry/ScopesAdapter : io/sentry/IScopes {
public fun isCrashedLastRun ()Ljava/lang/Boolean;
public fun isEnabled ()Z
public fun isHealthy ()Z
public fun logger ()Lio/sentry/logger/ILoggerApi;
public fun makeCurrent ()Lio/sentry/ISentryLifecycleToken;
public fun popScope ()V
public fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
Expand Down Expand Up @@ -2554,6 +2565,7 @@ public final class io/sentry/Sentry {
public static fun isCrashedLastRun ()Ljava/lang/Boolean;
public static fun isEnabled ()Z
public static fun isHealthy ()Z
public static fun logger ()Lio/sentry/logger/ILoggerApi;
public static fun popScope ()V
public static fun pushIsolationScope ()Lio/sentry/ISentryLifecycleToken;
public static fun pushScope ()Lio/sentry/ISentryLifecycleToken;
Expand Down Expand Up @@ -2721,6 +2733,7 @@ public final class io/sentry/SentryClient : io/sentry/ISentryClient {
public fun captureEnvelope (Lio/sentry/SentryEnvelope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureEvent (Lio/sentry/SentryEvent;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureFeedback (Lio/sentry/protocol/Feedback;Lio/sentry/Hint;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public fun captureLogs (Lio/sentry/SentryLogEvents;Lio/sentry/IScope;Lio/sentry/Hint;)V
public fun captureProfileChunk (Lio/sentry/ProfileChunk;Lio/sentry/IScope;)Lio/sentry/protocol/SentryId;
public fun captureReplayEvent (Lio/sentry/SentryReplayEvent;Lio/sentry/IScope;Lio/sentry/Hint;)Lio/sentry/protocol/SentryId;
public fun captureSession (Lio/sentry/Session;Lio/sentry/Hint;)V
Expand Down Expand Up @@ -2801,6 +2814,7 @@ public final class io/sentry/SentryEnvelopeItem {
public static fun fromCheckIn (Lio/sentry/ISerializer;Lio/sentry/CheckIn;)Lio/sentry/SentryEnvelopeItem;
public static fun fromClientReport (Lio/sentry/ISerializer;Lio/sentry/clientreport/ClientReport;)Lio/sentry/SentryEnvelopeItem;
public static fun fromEvent (Lio/sentry/ISerializer;Lio/sentry/SentryBaseEvent;)Lio/sentry/SentryEnvelopeItem;
public static fun fromLogs (Lio/sentry/ISerializer;Lio/sentry/SentryLogEvents;)Lio/sentry/SentryEnvelopeItem;
public static fun fromProfileChunk (Lio/sentry/ProfileChunk;Lio/sentry/ISerializer;)Lio/sentry/SentryEnvelopeItem;
public static fun fromProfilingTrace (Lio/sentry/ProfilingTraceData;JLio/sentry/ISerializer;)Lio/sentry/SentryEnvelopeItem;
public static fun fromReplay (Lio/sentry/ISerializer;Lio/sentry/ILogger;Lio/sentry/SentryReplayEvent;Lio/sentry/ReplayRecording;Z)Lio/sentry/SentryEnvelopeItem;
Expand All @@ -2814,7 +2828,7 @@ public final class io/sentry/SentryEnvelopeItem {
}

public final class io/sentry/SentryEnvelopeItemHeader : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
public fun <init> (Lio/sentry/SentryItemType;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public fun <init> (Lio/sentry/SentryItemType;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)V
public fun getAttachmentType ()Ljava/lang/String;
public fun getContentType ()Ljava/lang/String;
public fun getFileName ()Ljava/lang/String;
Expand All @@ -2836,6 +2850,7 @@ public final class io/sentry/SentryEnvelopeItemHeader$JsonKeys {
public static final field ATTACHMENT_TYPE Ljava/lang/String;
public static final field CONTENT_TYPE Ljava/lang/String;
public static final field FILENAME Ljava/lang/String;
public static final field ITEM_COUNT Ljava/lang/String;
public static final field LENGTH Ljava/lang/String;
public static final field PLATFORM Ljava/lang/String;
public static final field TYPE Ljava/lang/String;
Expand Down Expand Up @@ -2935,6 +2950,7 @@ public final class io/sentry/SentryItemType : java/lang/Enum, io/sentry/JsonSeri
public static final field ClientReport Lio/sentry/SentryItemType;
public static final field Event Lio/sentry/SentryItemType;
public static final field Feedback Lio/sentry/SentryItemType;
public static final field Log Lio/sentry/SentryItemType;
public static final field Profile Lio/sentry/SentryItemType;
public static final field ProfileChunk Lio/sentry/SentryItemType;
public static final field ReplayEvent Lio/sentry/SentryItemType;
Expand Down Expand Up @@ -3015,6 +3031,72 @@ public final class io/sentry/SentryLockReason$JsonKeys {
public fun <init> ()V
}

public final class io/sentry/SentryLogEvent : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
public fun <init> (Lio/sentry/protocol/SentryId;Lio/sentry/SentryDate;Ljava/lang/String;)V
public fun <init> (Lio/sentry/protocol/SentryId;Ljava/lang/Double;Ljava/lang/String;)V
public fun getAttributes ()Ljava/util/Map;
public fun getLevel ()Lio/sentry/SentryLevel;
public fun getTimestamp ()Ljava/lang/Double;
public fun getUnknown ()Ljava/util/Map;
public fun serialize (Lio/sentry/ObjectWriter;Lio/sentry/ILogger;)V
public fun setAttributes (Ljava/util/Map;)V
public fun setLevel (Lio/sentry/SentryLevel;)V
public fun setTimestamp (Ljava/lang/Double;)V
public fun setUnknown (Ljava/util/Map;)V
}

public final class io/sentry/SentryLogEvent$Deserializer : io/sentry/JsonDeserializer {
public fun <init> ()V
public fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Lio/sentry/SentryLogEvent;
public synthetic fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Ljava/lang/Object;
}

public final class io/sentry/SentryLogEvent$JsonKeys {
public static final field ATTRIBUTES Ljava/lang/String;
public static final field BODY Ljava/lang/String;
public static final field LEVEL Ljava/lang/String;
public static final field TIMESTAMP Ljava/lang/String;
public static final field TRACE_ID Ljava/lang/String;
public fun <init> ()V
}

public final class io/sentry/SentryLogEventAttributeValue : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
public fun <init> (Ljava/lang/String;Ljava/lang/Object;)V
public fun getUnknown ()Ljava/util/Map;
public fun serialize (Lio/sentry/ObjectWriter;Lio/sentry/ILogger;)V
public fun setUnknown (Ljava/util/Map;)V
}

public final class io/sentry/SentryLogEventAttributeValue$Deserializer : io/sentry/JsonDeserializer {
public fun <init> ()V
public fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Lio/sentry/SentryLogEventAttributeValue;
public synthetic fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Ljava/lang/Object;
}

public final class io/sentry/SentryLogEventAttributeValue$JsonKeys {
public static final field TYPE Ljava/lang/String;
public static final field VALUE Ljava/lang/String;
public fun <init> ()V
}

public final class io/sentry/SentryLogEvents : io/sentry/JsonSerializable, io/sentry/JsonUnknown {
public fun <init> (Ljava/util/List;)V
public fun getUnknown ()Ljava/util/Map;
public fun serialize (Lio/sentry/ObjectWriter;Lio/sentry/ILogger;)V
public fun setUnknown (Ljava/util/Map;)V
}

public final class io/sentry/SentryLogEvents$Deserializer : io/sentry/JsonDeserializer {
public fun <init> ()V
public fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Lio/sentry/SentryLogEvents;
public synthetic fun deserialize (Lio/sentry/ObjectReader;Lio/sentry/ILogger;)Ljava/lang/Object;
}

public final class io/sentry/SentryLogEvents$JsonKeys {
public static final field ITEMS Ljava/lang/String;
public fun <init> ()V
}

public final class io/sentry/SentryLongDate : io/sentry/SentryDate {
public fun <init> (J)V
public fun nanoTimestamp ()J
Expand Down Expand Up @@ -4571,6 +4653,41 @@ public abstract interface class io/sentry/internal/viewhierarchy/ViewHierarchyEx
public abstract fun export (Lio/sentry/protocol/ViewHierarchyNode;Ljava/lang/Object;)Z
}

public abstract interface class io/sentry/logger/ILoggerApi {
public abstract fun debug (Ljava/lang/String;[Ljava/lang/Object;)V
public abstract fun error (Ljava/lang/String;[Ljava/lang/Object;)V
public abstract fun fatal (Ljava/lang/String;[Ljava/lang/Object;)V
public abstract fun info (Ljava/lang/String;[Ljava/lang/Object;)V
public abstract fun log (Lio/sentry/SentryLevel;Lio/sentry/SentryDate;Ljava/lang/String;Lio/sentry/Hint;[Ljava/lang/Object;)V
public abstract fun log (Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
public abstract fun trace (Ljava/lang/String;[Ljava/lang/Object;)V
public abstract fun warn (Ljava/lang/String;[Ljava/lang/Object;)V
}

public final class io/sentry/logger/LoggerApi : io/sentry/logger/ILoggerApi {
public fun <init> (Lio/sentry/Scopes;)V
public fun debug (Ljava/lang/String;[Ljava/lang/Object;)V
public fun error (Ljava/lang/String;[Ljava/lang/Object;)V
public fun fatal (Ljava/lang/String;[Ljava/lang/Object;)V
public fun info (Ljava/lang/String;[Ljava/lang/Object;)V
public fun log (Lio/sentry/SentryLevel;Lio/sentry/SentryDate;Ljava/lang/String;Lio/sentry/Hint;[Ljava/lang/Object;)V
public fun log (Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
public fun trace (Ljava/lang/String;[Ljava/lang/Object;)V
public fun warn (Ljava/lang/String;[Ljava/lang/Object;)V
}

public final class io/sentry/logger/NoOpLoggerApi : io/sentry/logger/ILoggerApi {
public fun debug (Ljava/lang/String;[Ljava/lang/Object;)V
public fun error (Ljava/lang/String;[Ljava/lang/Object;)V
public fun fatal (Ljava/lang/String;[Ljava/lang/Object;)V
public static fun getInstance ()Lio/sentry/logger/NoOpLoggerApi;
public fun info (Ljava/lang/String;[Ljava/lang/Object;)V
public fun log (Lio/sentry/SentryLevel;Lio/sentry/SentryDate;Ljava/lang/String;Lio/sentry/Hint;[Ljava/lang/Object;)V
public fun log (Lio/sentry/SentryLevel;Ljava/lang/String;[Ljava/lang/Object;)V
public fun trace (Ljava/lang/String;[Ljava/lang/Object;)V
public fun warn (Ljava/lang/String;[Ljava/lang/Object;)V
}

public final class io/sentry/opentelemetry/OpenTelemetryUtil {
public fun <init> ()V
public static fun applyIgnoredSpanOrigins (Lio/sentry/SentryOptions;)V
Expand Down
4 changes: 4 additions & 0 deletions sentry/src/main/java/io/sentry/DateUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -165,4 +165,8 @@ public static long dateToNanos(final @NotNull Date date) {
public static long secondsToNanos(final @NotNull long seconds) {
return seconds * (1000L * 1000L * 1000L);
}

public static @NotNull BigDecimal doubleToBigDecimal(final @NotNull Double value) {
return BigDecimal.valueOf(value).setScale(6, RoundingMode.DOWN);
}
}
7 changes: 7 additions & 0 deletions sentry/src/main/java/io/sentry/HubAdapter.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.sentry;

import io.sentry.logger.ILoggerApi;
import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
Expand Down Expand Up @@ -382,4 +383,10 @@ public void reportFullyDisplayed() {
public @Nullable RateLimiter getRateLimiter() {
return Sentry.getCurrentScopes().getRateLimiter();
}

@ApiStatus.Experimental
@Override
public @NotNull ILoggerApi logger() {
return Sentry.getCurrentScopes().logger();
}
}
7 changes: 7 additions & 0 deletions sentry/src/main/java/io/sentry/HubScopesWrapper.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.sentry;

import io.sentry.logger.ILoggerApi;
import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
Expand Down Expand Up @@ -364,4 +365,10 @@ public void reportFullyDisplayed() {
public @NotNull SentryId captureReplay(@NotNull SentryReplayEvent replay, @Nullable Hint hint) {
return scopes.captureReplay(replay, hint);
}

@ApiStatus.Experimental
@Override
public @NotNull ILoggerApi logger() {
return scopes.logger();
}
}
5 changes: 5 additions & 0 deletions sentry/src/main/java/io/sentry/IScopes.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.sentry;

import io.sentry.logger.ILoggerApi;
import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
Expand Down Expand Up @@ -740,4 +741,8 @@ default boolean isNoOp() {

@NotNull
SentryId captureReplay(@NotNull SentryReplayEvent replay, @Nullable Hint hint);

@ApiStatus.Experimental
@NotNull
ILoggerApi logger();
}
3 changes: 3 additions & 0 deletions sentry/src/main/java/io/sentry/ISentryClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,9 @@ SentryId captureProfileChunk(
@ApiStatus.Experimental
SentryId captureCheckIn(@NotNull CheckIn checkIn, @Nullable IScope scope, @Nullable Hint hint);

@ApiStatus.Experimental
void captureLogs(@NotNull SentryLogEvents logEvents, @Nullable IScope scope, @Nullable Hint hint);

@ApiStatus.Internal
@Nullable
RateLimiter getRateLimiter();
Expand Down
8 changes: 8 additions & 0 deletions sentry/src/main/java/io/sentry/NoOpHub.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.sentry;

import io.sentry.logger.ILoggerApi;
import io.sentry.logger.NoOpLoggerApi;
import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
Expand Down Expand Up @@ -324,4 +326,10 @@ public void reportFullyDisplayed() {}
public boolean isNoOp() {
return true;
}

@ApiStatus.Experimental
@Override
public @NotNull ILoggerApi logger() {
return NoOpLoggerApi.getInstance();
}
}
8 changes: 8 additions & 0 deletions sentry/src/main/java/io/sentry/NoOpScopes.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.sentry;

import io.sentry.logger.ILoggerApi;
import io.sentry.logger.NoOpLoggerApi;
import io.sentry.protocol.Feedback;
import io.sentry.protocol.SentryId;
import io.sentry.protocol.SentryTransaction;
Expand Down Expand Up @@ -319,4 +321,10 @@ public boolean isNoOp() {
public @NotNull SentryId captureReplay(@NotNull SentryReplayEvent replay, @Nullable Hint hint) {
return SentryId.EMPTY_ID;
}

@ApiStatus.Experimental
@Override
public @NotNull ILoggerApi logger() {
return NoOpLoggerApi.getInstance();
}
}
Loading
Loading