こんにちは、寺岡です。
最近、とある案件でこんな要望が上がって来ました。
- Railsでsyslogを使ってログに出力する
- 任意のfacilityを指定したい
Rubyでsyslogを扱うライブラリとして、SyslogLoggerなどがありましたが、
これらライブラリでは満たせない要件があったので、自作することにしました。
syslogライブラリ調査
syslogをloggerクラスのインターフェスで扱えるラッパライブラリは、紛らわしいよく似た名前のものがいっぱいあったりします。
その中の数個のライブラリを調べてみましたが、facilityが設定できないものや、faclityの設定はできるものの、初めてコンストラクタが呼び出された時だけ有効で、2インスタンス目以降は無視されるものなどがありました。
普段は困らないのですが、UnicornなどのアプリケーションサーバとRailsが出力するログのfacilityを分けたい場合など、1プロセスで複数のfacilityを使い分けたい、といった要望に対応することができません。
というわけで、作ってみた
sys_logger というgemを作って公開してみました。
これで晴れて紛らわしいよく似た名前グループの仲間入りですね!
……いい名前が思いかずについやってしまいました。ゴメンナサイ。
sys_loggerを使えばインスタンスごとにfacilityを設定したり、facilityを途中で変更できたりします。
Rails3で利用するにはapplication.rbなどで以下のように設定すればOKです。
1 2 3 4 5 6 7 |
module YourAppName class Application < Rails::Application # ... config.logger = SysLogger.new('rails', SysLogger::LOG_LOCAL0) # ... end end |
githubやrubygemsを使うと、ちょっとしたコードでも気軽に公開できるので便利ですね。
これからも色々作って公開していきたいと思います!!