typesafe-configでSentryクライアントの設定をできる sentry-config をリリースしました
そもそもSentryってなに
アプリケーションの例外などのログを溜め込み、集計・可視化を行えるSaaSです。
詳細は割愛。
モチベーション
Sentryのクライアント実装こと、 sentry-java は環境変数とシステムプロパティでの設定方法を提供しています。
しかしながら、Scalaエンジニアを生業としている自分からすると、アプリケーションの設定は application.conf こと、typesafe-config が使われていることがほとんどです。
環境変数・システムプロパティ・typesafe-configと、設定が分散してしまい管理が大変だなと感じていました。
そこで、type-safeconfigからSentryの設定を読み込めればいいじゃん!と思い、ライブラリの作成に手を付けました。
使い方
ライブラリの依存を追加
執筆時点では 0.3.0
が最新になります
compile 'com.github.nomadblacky:sentry-config:0.3.0'
Sentryの設定を追加
sentry.properties
ファイルに以下を追加して、
factory=com.github.nomadblacky.sentry.config.SentryClientFactory
application.conf
に設定を書きます。
sentry { dsn = "DSN" environment = debug }
利用する
あとは普通にクライアントを利用するだけです。
import io.sentry.Sentry; import io.sentry.event.Event; import io.sentry.event.EventBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; public class App { private static void manualUsage() { EventBuilder eventBuilder = new EventBuilder() .withMessage("This is a test!") .withLevel(Event.Level.INFO); Sentry.capture(eventBuilder); } private static void withLogback() { Logger logger = LoggerFactory.getLogger(App.class); try (MDC.MDCCloseable closeable = MDC.putCloseable("sampleMdcTag", "Hey!")) { logger.warn("WARN from Logback!"); } } private static void uncaughtException() { throw new RuntimeException("This is an uncaught exception!"); } public static void main(String[] args) { manualUsage(); withLogback(); uncaughtException(); } }
課題
- 設定項目が網羅されてない・中途半端に穴抜けしている
- もくもく開発するしかない
- 一部の設定値の適用にシステムプロパティの上書きを行っている
- これはコードをちゃんと読んでなかった。直せそう。
- そもそもapplication.confに設定を逃しているのに、sentry.propertyなどでファクトリの設定が必要なのが微妙
- どうしよう
- コードがきたない・びみょう
- 久しぶりにJava書いたのでゆるして…
初めてMaven Centralにライブラリを公開したのですが、自分の子供のようでちょっと感慨深いものがあります。
ライブラリそのものはまだまだ未熟ですが、少しずつ着実に育てていければと思っています。