Amperity/dialogの紹介
Clojure Advent Calendar 2022穴埋め記事です。勤務先の会社のAmperityが公開しているClojureのためのロギングライブラリであるdialogを紹介します。
はじめに
ある一定以上真面目なアプリケーションであればロギングが必要である理由とか、JVMのエコシステムに置いてロギングがカオスであるとかという話は前提知識としてあるという想定をし、主に何が嬉しいと思われるのかを共有したい。使い方はレポジトリ以上のことは無いので割愛する。
https://clojureverse.org/t/how-do-you-personally-do-logging/4299
とかは参考として非常に良いのでオススメ
ポイント
slf4jのバックエンドを実装している
javaで書かれている
aeroのednファイルで設定をする
普通のロガーに期待するものは出来る
level
ライブラリを含めたpackage/namespace毎の設定
appender
middleware
ログしたデータを加工する
他のClojureログライブラリとの比較
tools.logging
結局何らかのjavaバックエンドを採用する必要があり、log4j2.xmlとかを書く必要がある
=> dialog = edn
timbre
依存しているClojureライブラリが他でも使われており (i.e. encore)していて、割とコンフリクトする
exclusion...
他のロギングフレームワークのことは知らないのでhttps://github.com/fzakaria/slf4j-timbreを使ってログをtimbreにリダイレクトする必要がある
dialogはslf4jを実装しているのでデフォルトで相互運用できる
使っている感想
一開発者とコードを書く分にはlog/infoとかするだけだで特に意識することは無い
xmlでなくednでいじれるのは良い
(多分)middlewareの機能により、分散トレーシングのコンテキストが注入されていて、ログメッセージからhoneycombでレースを特定しやすい
結論としてはロギングライブラリの選定のタイミングが来たら候補として検討しても良いと思うので記憶の片隅に留めておいていただければ、というところ。作者による講演も是非チェックして欲しい。
https://www.youtube.com/watch?v=neMx7-KS22o