Dropwizard integration for error logging to Sentry.
Dropwizard Sentry provides an AppenderFactory
which is automatically registered in Dropwizard and will send errors to Sentry.
In order to log startup errors (i.e. before the SentryAppenderFactory
has been properly initialized), the Dropwizard application has to run the SentryBootstrap.bootstrap()
in its main
method and set a custom UncaughtExceptionHandler
for the main thread.
public static void main(String[] args) throws Exception {
SentryBootstrap.bootstrap(DSN);
Thread.currentThread().setUncaughtExceptionHandler(UncaughtExceptionHandlers.systemExit());
new MyDropwizardApplication().run(args);
}
Please note that by default startup logger will catch all logs, you can specify custom threshold as following:
public static void main(String[] args) throws Exception {
SentryBootstrap.Builder()
.withDsn(DSN)
.withThreshold(THRESHOLD)
.bootstrap();
Thread.currentThread().setUncaughtExceptionHandler(UncaughtExceptionHandlers.systemExit());
new MyDropwizardApplication().run(args);
}
Include the sentry
appender in your application's YAML configuration:
appenders:
- type: sentry
threshold: ERROR
dsn: https://user:[email protected]/appid
environment: production
release: 1.0.0
serverName: 10.0.0.1
inAppIncludes: ['com.example','com.foo']
Setting | Default | Description | Example Value |
---|---|---|---|
threshold |
ALL | The minimum log level to send events to Sentry | ERROR |
dsn |
Data Source Name - format is https://{PUBLIC_KEY}:{SECRET_KEY}@sentry.io/{PROJECT_ID} |
https://foo:[email protected]/12345 |
|
environment |
[empty] | The environment your application is running in | production |
tags |
[empty] | Tags to be sent with each event | tag1:value1,tag2,value2 |
configurator |
[empty] | Specify a custom SentryConfigurator class |
com.example.MySentryConfigurator |
release |
[empty] | The release version of your application | 1.0.0 |
serverName |
[empty] | Override the server name (rather than looking it up dynamically) | 10.0.0.1 |
inAppIncludes |
[empty] | List of package prefixes used by application code | ['com.example','com.foo'] |
inAppExcludes |
[empty] | List of package prefixes not used by application code | ['com.thirdparty','com.anotherthirdparty'] |
contextTags |
[empty] | context tags names applied as Sentry tags to each event | ['contextTag1','contextTag2'] |
If you need to set configuration properties not listed above, append them to the dsn
as described here.
This project is available in the Central Repository. To add it to your project simply add the following dependency to your POM:
<dependency>
<groupId>org.dhatim</groupId>
<artifactId>dropwizard-sentry</artifactId>
<version>4.0.5</version>
</dependency>
Please file bug reports and feature requests in GitHub issues.
Thanks to dropwizard-raven from which much of the original implementation was derived.