そのため、以前は ActiveRecord を必要としなかったアプリケーションがあります。そのため、アプリケーションから ActiveRecord を削除し、ログを次のようにフォーマットしました。
application.rb で:
class DreamLogFormatter < Logger::Formatter
SEVERITY_TO_COLOR_MAP = {'DEBUG'=>'32', 'INFO'=>'0;37', 'WARN'=>'35', 'ERROR'=>'31', 'FATAL'=>'31', 'UNKNOWN'=>'37'}
def call(severity, time, progname, msg)
color = SEVERITY_TO_COLOR_MAP[severity]
"\033[0;37m[%s] \033[#{color}m%5s - %s\033[0m\n" % [time.to_s(:short), severity, msg2str(msg)]
end
end
class ActiveSupport::BufferedLogger
def formatter=(formatter)
@log.formatter = formatter
end
end
開発中.rb
config.logger = Logger.new("log/#{Rails.env}.log")
config.logger.formatter = DreamLogFormatter.new
ActiveResource::Base.logger = Logger.new("log/#{Rails.env}.log")
ActiveResource::Base.logger.formatter = DreamLogFormatter.new
注: 次のように ActiveResource 呼び出しの URL 出力が必要なため、ActiveResource ロガー構成が追加されました。
GET http://localhost:2524/users/
--> 200 OK 239 (13.0ms)
この構成でログを記録すると、ActiveResource 呼び出しと を使用した独自のログの優れた出力の組み合わせが得られましたRails.logger
。
ただし、セッション ストレージを Cookie ストアから ActiveRecord ストアに変更する必要があったため、アプリケーションに ActiveRecord を追加し直す必要がありました。また、ActiveRecord を再度追加してから、ロギングが適切に機能しなくなりました。
以前のログ出力:
Started GET "/audit/?key1=value1&key2=value2" for 0:0:0:0:0:0:0:1%0 at 2012-08-15 15:39:58 -0400
[15 Aug 15:39] INFO - Processing by AuditController#index as HTML
[15 Aug 15:39] INFO - Parameters: {"utf8"=>"✓", "key1"=>"value1", "key2"=>"value2"}
[15 Aug 15:39] INFO - GET http://localhost:2524/api/users/jeff/prefs/?label=language
[15 Aug 15:39] INFO - --> 200 OK 151 (55.0ms)
[15 Aug 15:39] WARN - There is no user currently logged in - retrieving default theme.
[15 Aug 15:39] INFO - GET http://localhost:2524/api/users/jeff/prefs/?label=theme
[15 Aug 15:39] INFO - --> 200 OK 151 (35.0ms)
注:この形式で私が本当に気に入っているのは、各要求が aStarted GET <URL>
または POST または PUT などで始まり、その後にどのコントローラーと関数が処理を行っているか、および送信されたパラメーターが何であるかが記録されることです。これは、デバッグに非常に役立ちます。また、この形式により、独自のRails.logger
ログ情報を出力することができました。
現在のログ出力(ActiveRecord を使用) :
[20 Aug 11:40] INFO - GET http://localhost:2524/api/users/jeff
[20 Aug 11:40] INFO - --> 200 OK 199 (144.0ms)
[20 Aug 11:40] INFO - GET http://localhost:2524/api/users/jeff/prefs/?label=language
[20 Aug 11:40] INFO - --> 200 OK 148 (12.0ms)
[20 Aug 11:40] INFO - GET http://localhost:2524/api/users/jeff/prefs/?label=theme
[20 Aug 11:40] INFO - --> 200 OK 155 (15.0ms)
基本的に、現在得られるのは URL 呼び出しの絶え間ないストリームだけです。それは、そこから来るものは何もログに記録せずRails.logger
、異なるリクエスト間の分離もありません。これは文字通り、URL と応答の 1 つの絶え間ないストリームです。
多くのブログが推奨するように設定しようとしActiveResource::Base.logger = ActiveRecord::Base.logger
ましたが、それは事態を悪化させました-いくつかのURLをログに記録し、エラーレベルでない限りログを完全に停止しました(ログレベルをどこにも設定していないので、それでもデフォルトである)
どんな助けや提案も大歓迎です!! ありがとう