2009年6月26日金曜日

Railsのログ書式を変更する方法

Ruby on Railsからログ出力すると、日付やログレベルが表示されなくて困る場合があります。そこで、手っ取り早くログフォーマットを変更するスニペットを書いてみました。
ActiveSupportでLoggerの出力メソッドを上書きしてるのが原因のようなので、そこをフックしてログを整形してます。

ActiveSupport::BufferedLogger.class_eval do
SEVERITIES = self::Severity.constants.inject({}){ |val, con| val[eval("self::#{con}")] = con; val }
def add_with_format(severity, message = nil, progname = nil, &block)
add_without_format(severity, nil) { "%s [%s] %s" % [Time.now, SEVERITIES[severity], message] }
end
alias_method_chain :add, :format
end

このスニペットを実行すると、
Thu Jun 25 16:23:14 +0900 2009 [INFO] XXXXXXX
のようなログが出力されるようになります。
フォーマットは適当なので、好みに応じて適宜修正してご利用ください。

0 件のコメント:

コメントを投稿