Java で Airbrake/Errbit を使うときに airbrake-java を使うべきではない
問題
Java + log4j で Airbrake / Errbit を使う場合には、公式である airbrake-java を使うと思う。
しかし、このライブラリは v2.2.8 時点でとんでもない地雷ライブラリだったので使うべきではない。
具体的には以下の様な不具合がある
- API に POST する XML のエスケープが正しくないため、コンストラクタ(
)がスタックトレースに含まれると XML が壊れる - XML のエンコーディングが指定されていないため、マルチバイト文字列を含むと XML が壊れる
- ホスト名を指定するのが難しい
いくつかの問題に対しては Pull-Request が上がっているが放置されている。
公式ライブラリとは一体…。
ではどうするか?
errbit-java という 3rd-party 製のライブラリがあって、上記の問題が全て解決されている。
使い方も簡単で、まず pom.xml に以下のように書く。
<dependency> <groupId>net.lightoze.errbit</groupId> <artifactId>errbit-logger</artifactId> <version>2.3.1</version> </dependency>
次に log4j.properites に以下のように書く。
log4j.appender.errbit=net.lightoze.errbit.Log4jErrbitAppender log4j.appender.errbit.apiKey=YOUR_ERRBIT_API_KEY log4j.appender.errbit.environment=production log4j.appender.errbit.url=https://your.errbit.host/notifier_api/v2/notices log4j.rootLogger=INFO, stdout, errbit
これで例外が出た時に Airbrake/Errbit に通知される。簡単ですね。
まとめ
Errbit 最高!