Logback
Once this integration is configured you can also use Sentry’s static API, as shown on the usage page, in order to do things like record breadcrumbs, set the current user, or manually send events. The source can be found on GitHub.
On this page, we get you up and running with Sentry's SDK, so that it will automatically report errors and exceptions in your application.
Don't already have an account and Sentry project established? Head over to sentry.io, then return to this page.
Install
Sentry captures data by using an SDK within your application’s runtime.
<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry-logback</artifactId>
<version>7.13.0</version>
</dependency>
For other dependency managers, see the central Maven repository.
Sentry's Java SDK depends on Gson as a transitive dependency; the minimum required version is 2.7.
If you are using multiple Sentry dependencies, you can add a bill of materials to avoid specifying the version of each dependency.
Configure
Configuration should happen as early as possible in your application's lifecycle.
The following example configures a ConsoleAppender
that logs to standard out at the INFO
level, and a SentryAppender
that logs to the Sentry server at the ERROR
level.
The ConsoleAppender
is provided only as an example of a non-Sentry appender set to a different logging threshold, similar to what you may already have in your project.
<configuration>
<!-- Configure the Console appender -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- Configure the Sentry appender, overriding the logging threshold to the WARN level -->
<appender name="Sentry" class="io.sentry.logback.SentryAppender">
<options>
<!-- NOTE: Replace the test DSN below with YOUR OWN DSN to see the events from this app in your Sentry project/dashboard -->
<dsn>https://examplePublicKey@o0.ingest.sentry.io/0</dsn>
</options>
</appender>
<!-- Enable the Console and Sentry appenders, Console is provided as an example
of a non-Sentry logger that is set to a different logging threshold -->
<root level="INFO">
<appender-ref ref="Console" />
<appender-ref ref="Sentry" />
</root>
</configuration>
DSN Configuration
Note that you need to configure your DSN (client key).
<appender name="Sentry" class="io.sentry.logback.SentryAppender">
<options>
<!-- NOTE: Replace the test DSN below with your DSN to see the events from this app in sentry.io -->
<dsn>https://examplePublicKey@o0.ingest.sentry.io/0</dsn>
</options>
</appender>
If the DSN is not present in the logback.xml
configuration, Sentry will attempt to read it from the system property sentry.dsn
, environment variable SENTRY_DSN
or the dsn
property in sentry.properties
file. See the configuration page for more details on external configuration.
Minimum Log Level
Two log levels are used to configure this integration:
- Configure the lowest level required for a log message to become an event (
minimumEventLevel
) sent to Sentry. - Configure the lowest level a message has to be to become a breadcrumb (
minimumBreadcrumbLevel
).
Breadcrumbs are kept in memory (by default the last 100 records) and are sent with events. For example, by default, if you log 100 entries with logger.info
or logger.warn
, no event is sent to Sentry. If you then log with logger.error
, an event is sent to Sentry which includes those 100 info
or warn
messages. For this to work, SentryAppender
needs to receive all log entries to decide what to keep as breadcrumb or sent as event. Set the SentryAppender
log level configuration to a value lower than what is set for the minimumBreadcrumbLevel
and minimumEventLevel
so that SentryAppender
receives these log messages.
<appender name="Sentry" class="io.sentry.logback.SentryAppender">
<options>
<!-- NOTE: Replace the test DSN below with YOUR OWN DSN to see the events from this app in your Sentry project/dashboard -->
<dsn>https://examplePublicKey@o0.ingest.sentry.io/0</dsn>
</options>
<!-- Optionally change minimum Event level. Default for Events is ERROR -->
<minimumEventLevel>WARN</minimumEventLevel>
<!-- Optionally change minimum Breadcrumbs level. Default for Breadcrumbs is INFO -->
<minimumBreadcrumbLevel>DEBUG</minimumBreadcrumbLevel>
</appender>
Verify
This snippet includes an intentional error, so you can test that everything is working as soon as you set it up:
import io.sentry.Sentry;
try {
throw new Exception("This is a test.");
} catch (Exception e) {
Sentry.captureException(e);
}
Learn more about manually capturing an error or message in our Usage documentation.
To view and resolve the recorded error, log into sentry.io and open your project. Clicking on the error's title will open a page where you can see detailed information and mark it as resolved.
- Package:
- maven:io.sentry:sentry-logback
- Version:
- 7.13.0
- Repository:
- https://github.com/getsentry/sentry-java