Gradle:
compile 'io.airbrake:javabrake:0.1.6'Maven:
<dependency>
<groupId>io.airbrake</groupId>
<artifactId>javabrake</artifactId>
<version>0.1.6</version>
</dependency>Ivy:
<dependency org='io.airbrake' name='javabrake' rev='0.1.6'>
<artifact name='javabrake' ext='pom'></artifact>
</dependency>Configuration:
import io.airbrake.javabrake.Notifier;
int projectId = 12345;
String projectKey = "FIXME";
Notifier notifier = new Notifier(projectId, projectKey);
notifier.addFilter(
(Notice notice) -> {
notice.setContext("environment", "production");
return notice;
});Using notifier directly:
try {
do();
} catch (IOException e) {
notifier.report(e);
}Using Airbrake proxy class:
import io.airbrake.javabrake.Airbrake;
try {
do();
} catch (IOException e) {
Airbrake.report(e);
}By default report sends errors asynchronously returning a Future, but synchronous API is also available:
import io.airbrake.javabrake.Notice;
Notice notice = Airbrake.reportSync(e);
if (notice.exception != null) {
logger.info(notice.exception);
} else {
logger.info(notice.id);
}To set custom params you can build and send notice in separate steps:
import io.airbrake.javabrake.Notice;
Notice notice = Airbrake.buildNotice(e);
notice.setContext("component", "mycomponent");
notice.setParam("param1", "value1");
Airbrake.send(notice);You can also set custom params on all reported notices:
notifier.addFilter(
(Notice notice) -> {
notice.setParam("myparam", "myvalue");
return notice;
});Or ignore specific notice:
notifier.addFilter(
(Notice notice) -> {
if (notice.context.get("environment") == "development") {
// Ignore notice.
return null;
}
return notice;
});To debug why notices are not sent you can use onReportedNotice hook:
notifier.onReportedNotice(
(notice) -> {
if (notice.exception != null) {
logger.info(notice.exception);
} else {
logger.info(String.format("notice id=%s url=%s", notice.id, notice.url));
}
});See https://github.com/airbrake/log4javabrake
See https://github.com/airbrake/log4javabrake2
See https://github.com/airbrake/logback
javabrake uses OkHttp as an HTTP client. So in order to use proxy all you have to do is to configure OkHttpClient:
import java.net.InetSocketAddress;
import okhttp3.OkHttpClient;
import okhttp3.Proxy;
import io.airbrake.javabrake.OkSender;
Proxy proxy = new Proxy(Proxy.Type.HTTP, InetSocketAddress.createUnresolved("192.168.1.105", 8081);
OkHttpClient httpClient =
new OkHttpClient.Builder()
.connectTimeout(3000, TimeUnit.MILLISECONDS)
.readTimeout(3000, TimeUnit.MILLISECONDS)
.writeTimeout(3000, TimeUnit.MILLISECONDS)
.proxy(proxy)
.build();
OkSender.setOkHttpClient(httpClient);./gradlew buildUpload to JCentral:
./gradlew bintrayUploadUpload to Maven Central:
./gradlew uploadArchives
./gradlew closeAndReleaseRepositoryUsefull links:
