ruby logger


Javaのlog 4 jのようなコンポーネントがなくて、プログラムをデバッグする時とても苦しくて、Log 4 jの使用方法をまねて書いた1つのRuby logger:配置ファイル:
dev:
  level: debug
  stdout: 1
  file: ./dev.log
  roll_type: file_size
  roll_param: 500K          # support K/M 

pro:
  level: info
  stdout: 1
  file: ./pro.log
  roll_type: daily
  roll_param:               # if use daily, this param should be null

default: pro

ざらざらしていて、自分では今すぐ使えばいいと感じています.
プロファイルのトップクラスkeysはdev,pro,...,default、defaultの値は前のstdoutが1であるべきで、fileは何も言うことはありません.roll_typeはlog 4 jのroll file type(多分この名前)に似ていますが、この値がdailyに設定されている場合、次のroll_paramは記入する必要はありませんが、typeをfile sizeに設定すると、paramは記入する必要があります.プログラムにはデフォルト値は書かれていません.この値はKまたはMを計量単位としてサポートされています.defaultというものは、loggerが自分でグローバル変数を作成します:@@log、この変数に対応する構成は、default後のものです.
 
 
印刷されたメッセージ形式:
//      debug  ,      active_record-2.2.2     ar     sql   。
DEBUG 09-06-10 13:04:56 my_logger.rb:151: debug msg.
DEBUG 09-06-10 13:04:57 abstract_adapter.rb:189:in `log_info':   Lang Load (0.1ms)   SELECT * FROM `langs` WHERE (`langs`.`id` = 88) 

//          :
ERROR 09-06-10 13:37:08 my_logger.rb:153: this is the error --asnvzxjvasjfs--:  
Connection refused - connect(2)    /usr/lib/ruby/1.8/net/http.rb:560:in `initialize'
    /usr/lib/ruby/1.8/net/http.rb:560:in `open'
    /usr/lib/ruby/1.8/net/http.rb:560:in `connect'
    /usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
    /usr/lib/ruby/1.8/timeout.rb:93:in `timeout'
    /usr/lib/ruby/1.8/net/http.rb:560:in `connect'
    /usr/lib/ruby/1.8/net/http.rb:553:in `do_start'
    /usr/lib/ruby/1.8/net/http.rb:542:in `start'
    /usr/lib/ruby/1.8/net/http.rb:1035:in `request'
    /usr/lib/ruby/1.8/net/http.rb:845:in `post'
    my_logger.rb:151

使用方法はlog 4 jと全く同じである:log.debug(msg); log.error(msg, e)
 
 
使用方法:
my_logger.rbの130行程度、require'yaml'付近、書かれたプログラムはプロファイルを読み取るもので、これはアプリケーションによって**プロファイルパスをカスタマイズする必要がある.
ymlの中のloggerを配置する時、仮にdblogというloggerを配置したと仮定して、プログラムの中でMyLoggerを使うことができます.get(「dblog」)のメソッド取得logger railsと組み合わせて使用すると、MyLoggerというクラスにはもっと多くの方法を追加する必要があるかもしれません.