Options for Servlet

Learn more about how the Sentry Java SDK can be configured via options. These are being passed to the init function and therefore set when the SDK is first initialized.

Options can be set by passing a callback to the init() method which will pass the option object along for modifications:

Copied
import io.sentry.Sentry;

public class MyClass {
  public static void main(String... args) {
    Sentry.init(options -> {
      // your Sentry project/dashboard
      options.setDsn("___PUBLIC_DSN___");
      options.setRelease("io.sentry.samples.console@3.0.0+1");
      options.setBeforeSend((event, hint) -> {
        // Drop an event altogether:
        if (event.getTag("SomeTag") != null) {
          return null;
        }
        return event;
      });
    });
  }
}

    Options that can be read from an environment variable (SENTRY_DSN, SENTRY_ENVIRONMENT, SENTRY_RELEASE) are read automatically.

    dsn

    Typestring

    The DSN tells the SDK where to send the events. If this value is not provided, the SDK will try to read it from the SENTRY_DSN environment variable. If that variable also does not exist, the SDK will just not send any events.

    In runtimes without a process environment (such as the browser) that fallback does not apply.

    Learn more about DSN utilization.

    debug

    Typeboolean
    Defaultfalse

    Turns debug mode on or off. If debug is enabled SDK will attempt to print out useful debugging information if something goes wrong with sending the event. The default is always false. It's generally not recommended to turn it on in production, though turning debug mode on will not cause any safety concerns.

    diagnosticLevel

    Typeenum
    DefaultDEBUG

    Enabling debug mode makes the SDK generate as much diagnostic data as possible. However, if you'd prefer to lower the verbosity of the Sentry SDK diagnostics logs, configure this option to set the appropriate level:

    • debug: default The most verbose mode
    • info: Informational messages
    • warning: Warning that something might not be right
    • error: Only SDK internal errors are printed
    • fatal: Only critical errors are printed

    dist

    Typestring

    Sets the distribution of the application. Distributions are used to disambiguate build or deployment variants of the same release of an application. For example, the dist can be the build number of an Xcode build or the version code of an Android build. The dist has a max length of 64 characters.

    release

    Typestring

    Sets the release. Some SDKs will try to automatically configure a release out of the box but it's a better idea to manually set it to guarantee that the release is in sync with your deploy integrations or source map uploads. Release names are strings, but some formats are detected by Sentry and might be rendered differently. Learn more about how to send release data so Sentry can tell you about regressions between releases and identify the potential source in the releases documentation or the sandbox.

    By default the SDK will try to read this value from the SENTRY_RELEASE environment variable (in the browser SDK, this will be read off of the window.SENTRY_RELEASE.id if available).

    environment

    Typestring
    Defaultproduction

    Sets the environment. This string is freeform and is set to production by default. A release can be associated with more than one environment to separate them in the UI (think staging vs prod or similar).

    By default, the SDK will try to read this value from the SENTRY_ENVIRONMENT environment variable (except for the browser SDK where this isn't applicable). If this value isn't set, it will use the default production.

    sampleRate

    Typefloat
    Default1.0

    Configures the sample rate for error events, in the range of 0.0 to 1.0. The default is 1.0, which means that 100% of error events will be sent. If set to 0.1, only 10% of error events will be sent. Events are picked randomly.

    maxBreadcrumbs

    Typeinteger
    Default100

    This variable controls the total amount of breadcrumbs that should be captured. This defaults to 100, but you can set this to any number. However, you should be aware that Sentry has a maximum payload size and any events exceeding that payload size will be dropped.

    maxCacheItems

    Typeinteger
    Default30

    The maximum number of envelopes to keep in cache. The SDKs use envelopes to send data, such as events, attachments, user feedback, and sessions to sentry.io. An envelope can contain multiple items, such as an event with a session and two attachments. Depending on the usage of the SDK, the size of an envelope can differ. If the number of envelopes in the local cache exceeds max-cache-items, the SDK deletes the oldest envelope and migrates the sessions to the next envelope to maintain the integrity of your release health stats. The default is 30.

    attachStacktrace

    Typeboolean
    Defaulttrue

    When enabled, stack traces are automatically attached to all messages logged. Stack traces are always attached to exceptions; however, when this option is set, stack traces are also sent with messages. This option, for instance, means that stack traces appear next to all log messages.

    This option is turned on by default.

    Grouping in Sentry is different for events with stack traces and without. As a result, you will get new groups as you enable or disable this flag for certain events.

    attachThreads

    Typeboolean
    Defaultfalse

    When enabled, information about all threads is attached to events, not just the crashing thread. This provides a more complete picture of the application state at the time of an error, including stack traces from all running threads.

    This option is turned off by default.

    Note that enabling this option may increase the payload size of events sent to Sentry.

    sendDefaultPii

    Typeboolean
    Defaultfalse

    If this flag is enabled, certain personally identifiable information (PII) is added by active integrations. By default, no such data is sent.

    This option is turned off by default.

    If you enable this option, be sure to manually remove what you don't want to send using our features for managing Sensitive Data.

    For backwards compatibility, sendDefaultPii keeps its existing behavior when no Data Collection field is configured. As soon as you configure any dataCollection field, Data Collection becomes the source of truth for its categories and sendDefaultPii no longer controls them.

    Unencoded Logback messages aren't a Data Collection category. To include original message templates and parameters when an encoder is configured, use the Logback appender's includeUnencodedMessage option. The legacy sendDefaultPii behavior remains supported for compatibility. OpenTelemetry-derived HTTP data also isn't controlled by Data Collection yet. Sensitive HTTP header attributes continue to use sendDefaultPii; URL and query string attributes are collected when present regardless of that flag.

    dataCollection

    Available since8.58.0
    TypeDataCollection

    Controls which categories of data SDK integrations collect automatically. Data Collection applies only where an integration supports the category. It doesn't remove data you add explicitly through scopes, event processors, or callbacks such as beforeSend.

    FieldTypeDefaultBehavior
    userInfobooleantrueAllows integrations to populate user identity and IP address information.
    cookies*KeyValueCollectionBehaviorDENY_LISTCollects cookies and filters sensitive values.
    httpHeaders.request*KeyValueCollectionBehaviorDENY_LISTCollects request headers and filters sensitive values.
    httpHeaders.response*KeyValueCollectionBehaviorDENY_LISTCollects response headers and filters sensitive values.
    httpBodiesSet<HttpBodyType>all body typesCollects supported incoming and outgoing request and response bodies. An empty set disables body content collection.
    urlQueryParams*KeyValueCollectionBehaviorDENY_LISTCollects URL query parameters and filters sensitive values.
    graphql.documentbooleantrueCollects GraphQL documents.
    graphql.variablesbooleantrueCollects GraphQL variables.
    filePathsbooleantrueAllows File I/O instrumentation to collect file names and absolute paths. File extensions and byte counts remain available when disabled.

    The Spring and Spring Boot integrations collect incoming request body content only when httpBodies includes INCOMING_REQUEST and the body meets the configured maxRequestBodySize limit.

    * Fields marked with an asterisk take a single KeyValueCollectionBehavior value in code. Properties, environment variables, Spring Boot, and Android manifest metadata expose that value as separate mode and terms settings. terms contains additional matching terms for deny-list or allow-list behavior.

    The cookies, httpHeaders.request, httpHeaders.response, and urlQueryParams fields support three modes:

    • OFF (KeyValueCollectionBehavior.off()): Don't collect the category.
    • DENY_LIST (KeyValueCollectionBehavior.denyList(...)): Collect values except those matching the built-in sensitive list or additional configured terms. The no-argument constructor uses this mode without custom terms.
    • ALLOW_LIST (KeyValueCollectionBehavior.allowList(...)): Include plaintext values only for keys that match configured terms and don't match the built-in sensitive list. Sensitive values are always replaced with "[Filtered]".

    Matching is partial and case-insensitive. The built-in terms are auth, token, secret, password, passwd, pwd, key, jwt, bearer, sso, saml, csrf, xsrf, credentials, session, sid, and identity. Filtered values are replaced with "[Filtered]". Custom deny-list terms extend the built-in list rather than replacing it.

    When migrating from sendDefaultPii, review your header configuration. The legacy header filtering omitted sensitive headers such as X-Forwarded-For, X-Real-IP, and Remote-Addr in supported integrations. After you configure any Data Collection field, sendDefaultPii no longer controls these headers. Data Collection's default deny list filters credential and secret values but doesn't automatically match those identifying headers. To continue filtering them, add forwarded, -ip, remote-, via, and -user to a deny list. These terms also match keys such as CF-Connecting-IP and X-User-Id. Add them to cookies, httpHeaders.request, httpHeaders.response, or urlQueryParams as needed.

    Configure only the fields that differ from these defaults:

    Copied
    import io.sentry.KeyValueCollectionBehavior;
    import io.sentry.Sentry;
    
    Sentry.init(
        options -> {
          options.getDataCollection().setUserInfo(false);
          options.getDataCollection().setFilePaths(false);
          options
              .getDataCollection()
              .setUrlQueryParams(KeyValueCollectionBehavior.off());
          options
              .getDataCollection()
              .getHttpHeaders()
              .setRequest(
                  KeyValueCollectionBehavior.denyList(
                      "forwarded", "-ip", "remote-", "via", "-user"));
        });
    

    You can also configure Data Collection through external properties. Make sure enableExternalConfiguration is enabled for these properties to take effect.

    sentry.properties
    Copied
    data-collection.user-info=false
    data-collection.http-bodies=incoming_request,outgoing_request
    data-collection.cookies.mode=deny_list
    data-collection.cookies.terms=session-id,tracking-id
    data-collection.http-headers.request.mode=deny_list
    data-collection.http-headers.request.terms=forwarded,-ip,remote-,via,-user
    data-collection.http-headers.response.mode=off
    data-collection.url-query-params.mode=off
    data-collection.graphql.document=false
    data-collection.graphql.variables=false
    data-collection.file-paths=false
    

    Environment variables use the same names in uppercase with the SENTRY_ prefix, for example, SENTRY_DATA_COLLECTION_USER_INFO, SENTRY_DATA_COLLECTION_HTTP_BODIES, and SENTRY_DATA_COLLECTION_FILE_PATHS.

    Data Collection preserves existing applications until you opt in:

    ConfigurationResult
    No Data Collection fieldsExisting sendDefaultPii behavior is preserved.
    forceDataCollection()All Data Collection categories use the defaults above.
    Any Data Collection fieldThat field uses its configured value, omitted fields use the defaults above, and sendDefaultPii is ignored for Data Collection categories.

    If you previously used sendDefaultPii=false, either leave Data Collection unset to preserve that behavior or explicitly disable every category you don't want collected. If you used sendDefaultPii=true, call options.getDataCollection().forceDataCollection() to opt into the new filtered defaults. For unencoded Logback messages, use includeUnencodedMessage as described in the Logback documentation. Keep sendDefaultPii=true only if you need the legacy OpenTelemetry header behavior.

    serverName

    Typestring

    This option can be used to supply a server name. When provided, the name of the server is sent along and persisted in the event. For many integrations, the server name actually corresponds to the device hostname, even in situations where the machine is not actually a server.

    Most SDKs will attempt to auto-discover this value.

    inAppIncludes

    Typearray

    A list of string prefixes of module names that belong to the app. This option takes precedence over in-app-excludes.

    Sentry differentiates stack frames that are directly related to your application ("in application") from stack frames that come from other packages such as the standard library, frameworks, or other dependencies. The application package is automatically marked as inApp. The difference is visible in sentry.io, where only the "in application" frames are displayed by default.

    inAppExcludes

    Typearray

    A list of string prefixes of module names that do not belong to the app, but rather to third-party packages. Modules considered not part of the app will be hidden from stack traces by default.

    This option can be overridden using inAppIncludes.

    ignoredExceptionsForType

    Typearray

    A list of exception types that will be filtered out before sending to Sentry.

    maxRequestBodySize

    Typeenum
    DefaultNONE

    This parameter controls whether integrations should capture HTTP request bodies. It can be set to one of the following values:

    • none: default Request bodies are never sent.
    • small: Only small request bodies will be captured. The cutoff for small depends on the SDK (typically 4KB).
    • medium: Medium and small requests will be captured (typically 10KB).
    • always: The SDK will always capture the request body as long as Sentry can make sense of it.

    When Data Collection is configured, dataCollection.httpBodies controls supported request and response bodies instead. maxRequestBodySize remains the size limit for integrations that use it.

    enabled

    Typeboolean
    Defaulttrue

    Specifies whether this SDK should send events to Sentry. Defaults to true. Setting this to enabled: false doesn't prevent all overhead from Sentry instrumentation. To disable Sentry completely, depending on environment, call Sentry.init conditionally.

    sendClientReports

    Available since6.0.0
    Typeboolean
    Defaulttrue

    Set this boolean to false to disable sending of client reports. Client reports are a protocol feature that let clients send status reports about themselves to Sentry. They are currently mainly used to emit outcomes for events that were never sent.

    (New in version 6.0.0)

    forceInit

    Available since8.0.0
    Typeboolean
    Defaultfalse

    Set this boolean to true to force a call to Sentry.init to re-initialize the SDK, even if the SDK has already been initialized by a high priority integration.

    (New in version 8.0.0)

    enableBackpressureHandling

    Available since7.1.0
    Typeboolean
    Defaulttrue

    Set this boolean to false to disable automatic downsampling of transactions while the system is under load. The tracesSampleRate is halved for every failing health check up to 10 times, (roughly 0.001% of the original tracesSampleRate). Any positive health check will reset tracesSampleRate to its original value. Health checks run in the background every 10 seconds, checking for queue drops and rate limiting. Note: Starting with version 7.8.0 backpressure handling has changed from opt-in to opt-out.

    (New in version 7.1.0)

    enableEventSizeLimiting

    Available since8.27.0
    Typeboolean
    Defaultfalse

    Set this boolean to true to enable automatic truncation of events when the SDK detects they are too large to be ingested by Sentry. Also see onOversizedEvent.

    onOversizedEvent

    Available since8.27.0
    Typefunction

    Register this callback to implement custom logic for reducing the size of an event. If the returned event is small enough, no further truncation is performed, otherwise default truncation will kick in.

    For many platform SDKs integrations can be configured alongside it. On some platforms that happen as part of the init() call, in some others, different patterns apply.

    integrations

    Typearray

    In some SDKs, the integrations are configured through this parameter on library initialization. For more information, please see our documentation for a specific integration.

    These options can be used to hook the SDK in various ways to customize the reporting of events or to monitor the type and amount of discarded data.

    beforeSend

    Typefunction

    This function is called with the event payload, and can return a modified event object, or null to skip reporting the event. This can be used, for instance, for manual PII stripping before sending.

    By the time beforeSend is executed, all scope data has already been applied to the event. Further modification of the scope won't have any effect.

    beforeSendTransaction

    Typefunction

    This function is called with a transaction event object, and can return a modified transaction event object, or null to skip reporting the event. One way this might be used is for manual PII stripping before sending.

    beforeBreadcrumb

    Typefunction

    This function is called with a breadcrumb object before the breadcrumb is added to the scope. When nothing is returned from the function, the breadcrumb is dropped. To pass the breadcrumb through, return the first argument, which contains the breadcrumb object. The callback typically gets a second argument (called a "hint") which contains the original object from which the breadcrumb was created to further customize what the breadcrumb should look like.

    onDiscard

    Typefunction

    This function is called when data is discarded, for reasons including sampling, network errors, or queue overflows. The function arguments give the user insight into the reason for discarding, the type of data discarded, and the number of items discarded.

    Transports are used to send events to Sentry. Transports can be customized to some degree to better support highly specific deployments.

    transport

    Typefunction

    Switches out the transport used to send events. It can, for instance, be used to capture events for unit-testing or to send it through some more complex setup that requires proxy authentication.

    httpProxy

    Typestring

    When set, a proxy can be configured that should be used for outbound requests. This is also used for HTTPS requests unless a separate https-proxy is configured. However, not all SDKs support a separate HTTPS proxy. SDKs will attempt to default to the system-wide configured proxy, if possible. For instance, on Unix systems, the http_proxy environment variable will be picked up.

    shutdownTimeoutMillis

    Typeinteger
    Default2000

    Controls how many seconds to wait before shutting down. The SDK sends events from a background queue. This queue is given a certain amount to drain pending events. The default is two seconds. Setting this value too low may cause problems for sending events from command line applications. Setting the value too high will cause the application to block for a long time for users experiencing network connectivity problems.

    tracesSampleRate

    Typefloat

    A number between 0 and 1, controlling the percentage chance a given transaction will be sent to Sentry. (0 represents 0% while 1 represents 100%.) Applies equally to all transactions created in the app. Either this or tracesSampler must be defined to enable tracing.

    tracesSampler

    Typefunction

    A function responsible for determining the percentage chance a given transaction will be sent to Sentry. It will automatically be passed information about the transaction and the context in which it's being created, and must return a number between 0 (0% chance of being sent) and 1 (100% chance of being sent). Can also be used for filtering transactions, by returning 0 for those that are unwanted. Either this or tracesSampleRate must be defined to enable tracing.

    tracePropagationTargets

    Typearray

    An optional property that controls which downstream services receive tracing data, in the form of a sentry-trace and a baggage header attached to any outgoing HTTP requests.

    The option may contain a list of strings or regex against which the URLs of outgoing requests are matched. If one of the entries in the list matches the URL of an outgoing request, trace data will be attached to that request. String entries do not have to be full matches, meaning the URL of a request is matched when it contains a string provided through the option.

    If tracePropagationTargets is not provided, trace data is attached to every outgoing request from the instrumented client.

    propagateTraceparent

    Available since8.22.0
    Typeboolean
    Defaultfalse

    Controls whether the SDK should propagate the W3C traceparent HTTP header alongside the sentry-trace and baggage headers for distributed tracing. This option defaults to false and is available starting from SDK version 8.22.0.

    If your backend uses an OTel collector with tail-based sampling, see Sentry with OTel for an important interaction with this option.

    traceOptionsRequests

    Typeboolean
    Defaulttrue

    Set this boolean to false to disable tracing for OPTIONS requests. This options default value will likely be changed in the next major version, meaning you will have to set it to true if you want to keep tracing OPTIONS requests.

    enableCacheTracing

    Typeboolean
    Defaultfalse

    Whether cache operations (get, put, remove, flush) should be traced. When enabled, the SDK creates spans for cache operations performed through the JCache integration or Spring Cache (e.g. @Cacheable, @CachePut, @CacheEvict).

    enableQueueTracing

    Available since8.41.0
    Typeboolean
    Defaultfalse

    Whether Kafka queue operations should be traced. When enabled, the SDK creates queue.publish spans for producer sends and queue.process transactions for consumer record processing. See the Kafka integration for setup instructions.

    profileSessionSampleRate

    Available since8.23.0
    Typefloat

    A number between 0 and 1, controlling the percentage chance that the session will be profiled. (0 represents 0%, 1 represents 100%.) The default is null (disabled).

    profileLifecycle

    Available since8.23.0
    Typeenum
    Defaultmanual

    Whether the continuous profiling lifecycle is controlled manually or based on the trace lifecycle. Possible values are:

    • manual: default Profiler must be started and stopped through Sentry.startProfiler() and Sentry.stopProfiler() APIs
    • trace: Profiler is started and stopped automatically whenever a sampled trace starts or finishes
    Was this helpful?
    Help improve this content
    Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").