ぶらっ記ぃ

日本語の練習をしています

sentry-config v0.4.0 をリリースしました

github.com

sentry-config ってなにそれ

sentry-javaの設定をtypesafe-configでできるようにするライブラリです。

前回リリースしたv0.3.0の記事

変更点

一通りの設定項目をサポート

公式ドキュメントに記載のない設定項目を含め、sentry-javaが提供する一通りの設定項目をサポートしました。

application.conf

sentry {
  dsn = "noop://localhost/1"
  release = "0.1.0"
  dist = "x86"
  environment = "development"
  servername = "dev-server"
  tags {
    key1 = "value1"
    key2 = "value2"
  }
  mdctags = [
    "mdcTag1",
    "mdcTag2"
  ]
  extra {
    ex1 = "exValue1"
    ex2 = "exValue2"
  }
  stacktrace.app.packages = [
    "com.github.nomadblacky",
    "sample.foo"
  ]
  stacktrace.hidecommon = false
  sample.rate = 0.75
  uncaught.handler.enabled = false
  buffer {
    enabled = false
    dir = "./buffer"
    size = 100
    flushtime = 200000
    shutdowntimeout = 300000
    gracefulshutdown = false
  }
  async {
    enabled = false
    shutdowntimeout = 500
    queuesize = 200
    priority = 9
    threads = 3
    gracefulshutdown = false
  }
  http.proxy {
    host = "proxy.org"
    port = 8888
    user = username
    password = pass
  }
  compression = false
  maxmessagelength = 2000
  timeout = 3000
}

ユーザ独自のクライアント生成をサポート

com.github.nomadblacky.sentry.config.DefaultTypesafeConfigSentryClientFactory を継承して、イベント生成のヘルパなどを登録できるようになりました。

package sample;

import com.github.nomadblacky.sentry.config.DefaultTypesafeConfigSentryClientFactory;

public class MyCustomSentryClientFactory extends DefaultTypesafeConfigSentryClientFactory {
    @Override
    public SentryClient createSentryClient(Dsn dsn) {
        // TypesafeConfig を使ってクライアントを初期化
        SentryClient client = super.createSentryClient(dsn);
        client.addBuilderHelper(new CustomEventBuilderHelper());
        return client;
    }
}

public class CustomEventBuilderHelper implements EventBuilderHelper { 
    @Override
    public void helpBuildingEvent(EventBuilder eventBuilder) {
          // ...
    }
}
$ java -Dsentry.factory=sample.MyCustomSentryClientFactory

or

sentry.properties

factory=sample.MyCustomSentryClientFactory

その他

プロパティの上書きみたいなイケてないところがなくなりました。
sentry.factory の指定が必要でそこはダサいですがたぶんどうしようもない…


これで一応、このライブラリでやりきるところはやりきった感じがします。

依存ライブラリのアップデートがあれば追従する感じでしょうか。
でも、dependabotが便利なのでそこは楽々できそう。

まだ実プロダクトに導入してない()ので、仕事で使ってるプロジェクトに導入していきたいですね。
実際に使ってみると至らない点が色々見えてくるかもしれない。

…まぁ、ここまでやっておいて今更、 sentry.properties で事足りるのがほとんどだよね。という気がしているけど泣かない😂
typesafe-configを使ってるプロジェクトで、環境毎にSentryの設定をちょろっと変えたい…って時に役立つはずです、たぶん。

ライブラリで提供したい利便性をよく考えてから開発を始めましょう。