All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.sentry.spring.boot.jakarta.SentryProperties Maven / Gradle / Ivy

The newest version!
package io.sentry.spring.boot.jakarta;

import com.jakewharton.nopen.annotation.Open;
import io.sentry.SentryOptions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.slf4j.event.Level;
import org.springframework.boot.context.properties.ConfigurationProperties;

/** Configuration for Sentry integration. */
@ConfigurationProperties("sentry")
@Open
public class SentryProperties extends SentryOptions {

  /** Whether to use Git commit id as a release. */
  private boolean useGitCommitIdAsRelease = true;

  /** Report all or only uncaught web exceptions. */
  private int exceptionResolverOrder = 1;

  /**
   * Defines the {@link io.sentry.spring.SentryUserFilter} order. The default value is {@link
   * org.springframework.core.Ordered.LOWEST_PRECEDENCE}, if Spring Security is auto-configured, its
   * guaranteed to run after Spring Security filter chain.
   */
  private @Nullable Integer userFilterOrder;

  /** Logging framework integration properties. */
  private @NotNull Logging logging = new Logging();

  /** Reactive framework (e.g. WebFlux) integration properties */
  private @NotNull Reactive reactive = new Reactive();

  /**
   * If set to true, this flag disables all AOP related features (e.g. {@link
   * io.sentry.spring.jakarta.tracing.SentryTransaction}, {@link
   * io.sentry.spring.jakarta.tracing.SentrySpan}) to successfully compile to GraalVM
   */
  private boolean enableAotCompatibility = false;

  /** Graphql integration properties. */
  private @NotNull Graphql graphql = new Graphql();

  public boolean isUseGitCommitIdAsRelease() {
    return useGitCommitIdAsRelease;
  }

  public void setUseGitCommitIdAsRelease(boolean useGitCommitIdAsRelease) {
    this.useGitCommitIdAsRelease = useGitCommitIdAsRelease;
  }

  /**
   * Returns the order used for Spring SentryExceptionResolver, which determines whether all web
   * exceptions are reported, or only uncaught exceptions.
   *
   * @return order to use for Spring SentryExceptionResolver
   */
  public int getExceptionResolverOrder() {
    return exceptionResolverOrder;
  }

  /**
   * Sets the order to use for Spring SentryExceptionResolver, which determines whether all web
   * exceptions are reported, or only uncaught exceptions.
   *
   * @param exceptionResolverOrder order to use for Spring SentryExceptionResolver
   */
  public void setExceptionResolverOrder(int exceptionResolverOrder) {
    this.exceptionResolverOrder = exceptionResolverOrder;
  }

  public @Nullable Integer getUserFilterOrder() {
    return userFilterOrder;
  }

  public void setUserFilterOrder(final @Nullable Integer userFilterOrder) {
    this.userFilterOrder = userFilterOrder;
  }

  public @NotNull Logging getLogging() {
    return logging;
  }

  public void setLogging(@NotNull Logging logging) {
    this.logging = logging;
  }

  public @NotNull Reactive getReactive() {
    return reactive;
  }

  public void setReactive(@NotNull Reactive reactive) {
    this.reactive = reactive;
  }

  public boolean isEnableAotCompatibility() {
    return enableAotCompatibility;
  }

  public void setEnableAotCompatibility(boolean enableAotCompatibility) {
    this.enableAotCompatibility = enableAotCompatibility;
  }

  public @NotNull Graphql getGraphql() {
    return graphql;
  }

  public void setGraphql(@NotNull Graphql graphql) {
    this.graphql = graphql;
  }

  @Open
  public static class Logging {
    /** Enable/Disable logging auto-configuration. */
    private boolean enabled = true;

    /** Minimum logging level for recording breadcrumb. */
    private @Nullable Level minimumBreadcrumbLevel;

    /** Minimum logging level for recording event. */
    private @Nullable Level minimumEventLevel;

    /** List of loggers the SentryAppender should be added to. */
    private @NotNull List loggers = Arrays.asList(org.slf4j.Logger.ROOT_LOGGER_NAME);

    public boolean isEnabled() {
      return enabled;
    }

    public void setEnabled(boolean enabled) {
      this.enabled = enabled;
    }

    public @Nullable Level getMinimumBreadcrumbLevel() {
      return minimumBreadcrumbLevel;
    }

    public void setMinimumBreadcrumbLevel(@Nullable Level minimumBreadcrumbLevel) {
      this.minimumBreadcrumbLevel = minimumBreadcrumbLevel;
    }

    public @Nullable Level getMinimumEventLevel() {
      return minimumEventLevel;
    }

    public void setMinimumEventLevel(@Nullable Level minimumEventLevel) {
      this.minimumEventLevel = minimumEventLevel;
    }

    @NotNull
    public List getLoggers() {
      return loggers;
    }

    public void setLoggers(final @NotNull List loggers) {
      this.loggers = loggers;
    }
  }

  @Open
  public static class Reactive {
    /**
     * Enable/Disable usage of {@link io.micrometer.context.ThreadLocalAccessor} for Scopes
     * propagation
     */
    private boolean threadLocalAccessorEnabled = true;

    public boolean isThreadLocalAccessorEnabled() {
      return threadLocalAccessorEnabled;
    }

    public void setThreadLocalAccessorEnabled(boolean threadLocalAccessorEnabled) {
      this.threadLocalAccessorEnabled = threadLocalAccessorEnabled;
    }
  }

  @Open
  public static class Graphql {

    /** List of error types the Sentry Graphql integration should ignore. */
    private @NotNull List ignoredErrorTypes = new ArrayList<>();

    @NotNull
    public List getIgnoredErrorTypes() {
      return ignoredErrorTypes;
    }

    public void setIgnoredErrorTypes(final @NotNull List ignoredErrorTypes) {
      this.ignoredErrorTypes = ignoredErrorTypes;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy