Netflix製ロギングFWのblitz4jを使うべきか
SLF4jのユニットテストいい感じに書けないのかなーとネットサーフィンしてて引っかかってしまった情報。
ソースそのままでLog4jからSLF4J&Logbackに移行する方法 - 夢とガラクタの集積場
こちらのページで、下記ようにNetflixがロギングフレームワークをアナウンスしたって情報が出てる。
なんとなくNetflixという単語だけで飛びついてしまったけどどうなのか。
結論
2019年時点ではLogbackやLog4j2の方が主流の認識。
でも調べた限りのパフォーマンス比較だとBlitz4jの方が早いケースはあるかもしれない。
調査情報
NetflixはLogback使えるならそれでいいんじゃね?と言ってる
Announcing Blitz4j — a scalable logging framework – Netflix TechBlog – Medium
上記Netflixのアナウンス見た限り下記のような感じで書かれているように見受けられた。(超意訳)
- Log4jの同期でパフォーマンスネックになるところがきつい。
- 必要なところ以外は同期外してパフォーマンスが出るようにしてみた。
- Log4jと比較してロギングの正確さよりもパフォーマンスを重きを置いている。
- LogBackじゃない理由?使えるならそっちでいいんじゃね。既存プロジェクトから移行するのは結構手間みたいよ。
- 俺らは移行にかかる手間とのトレードオフで考えて自作したほうがいいって判断した。
Netflix自身もLogBackよりもこっち、というほどは推していないようである。
移植性はアナウンス時点でLog4j2.xの正式リリースはなかったから、移植性などもそっちとの比較にはなってない気がする。
コミュニティの活発さ
一応github見て最近のプルリクマージ数なんかで比較してみた。
Pulse · Netflix/blitz4j · GitHub
Pulse · qos-ch/logback · GitHub
Pulse · apache/logging-log4j2 · GitHub
メンテ頻度が高けりゃいいってもんでもないけど、執筆時点ではLog4j2 > Logback > blitz4jという感じ。
blitz4jの活発度は他のライブラリよりは劣る認識。
性能の比較
Log4j(2) vs Logbackあたりなら比較したよってページもあるけど、Blitz4jも基準合わせて比較してみないといけないのでよくわからない。
あと公式はどうしても自身のライブラリが高パフォーマンスになるように基準切ると思うので…
Log4jの公式パフォーマンス比較なんかだとLogbackのdisが激しいように見える。
ただ、下記のことから主流ライブラリよりもBlitz4jの方がパフォーマンスが出ている可能性は否定できない。
まとめ
コミュニティの活発さなども考えたら第1選択肢はLogbackかLog4j2か、という点は変わりなさそう。
性能を求めるならBlitz4jも検討対象に入れてみたい。ただし性能検証はちゃんとやる。
何にしても公式のパフォーマンス情報は鵜呑みにしてはいけないと思う。