ActiveSupport::Logger#broadcast は異なるレベルのロガーを束ねるには適さない?
セッターの挙動を見るに、レベルやフォーマッタなどは全て同一のものを使う前提にあるっぽい。
extend
後にセッターを呼ばなければ各ロガーで設定したものを使う事はできるが、 quiet_assets
や ActiveSupport::Logger#silence
などを使った場合はレベルが変更されてしまうので、できないものだと考えて使わないと危険な感じがする。
という事で、 quiet_assets
を使っていても追加ロガーのログレベルを変更されない様に、懐かしの TwP/logging を使って Bugsnag.notify
を呼ぶ様にしてみたのが、以下のプラグイン。
colbygk/log4r じゃないのは、なんとなくでしかない。土地感覚が無いのと、GitHub スター数と、更新日で決めただけ。Ruby Toolbox だと log4r の方が人気だったんだけど。
Rails での利用を想定して書いたので、TwP/logging-rails と組み合わせて以下の様な感じで使う。
TwP/logging-email みたいにッファリングとかの遅延措置はしてないので、応答時間がシビアな場面では使えなそうな点は気になりつつ放置…。