2012-07-07 3 views
5

本番環境でのキャッシュのロギングを無効にしようとしています。クエリのロギングを停止するためにSQLを取得することに成功しましたが、ログエントリをキャッシュすることで不運です。運用ログの例行:レールでactiverecordキャッシュのログを無効にする方法

logger.debugステートメントを本番ログに表示したいので、すべてのログを無効にしたくありません。 MysqlとApacheでレール3.2.1を使用しています。 提案がありますか?

+1

私はあなたの答えは 'CACHE(0.0ms)'様のエントリに関連してどのようにレール2.3.5 – Joelio

答えて

-1

似たようなテーマのこのような質問がいくつかあります(thisthisthis)。あなたは、初期化ファイルでこれを入れてみてください:

old_logger = ActiveRecord::Base.logger 
ActiveRecord::Base.logger = nil 

ロガーを復元します。

ActiveRecord::Base.logger = old_logger; nil # nil just to suppress some garbage 
+4

を使用して同じことを行う方法を知っていただきたいと思いますか? – jdoe

2

私は、下記のリンクポストによって提案された方法を使用してキャッシュログを沈黙。

私は、デフォルトのActiveRecodロガーを、不要なテキスト、つまり「CACHE」を含むメッセージをフィルタリングするラッパーに置き換えました。

まず、例えばactive_record.rbためconfig/initializers内のファイルを作成し、ファイル内のラッパークラスを定義して、以下のコードのようにアクティブなレコードロガーを置き換える:

# Implementation of logger that ignores messages containing forbidden words 
# here “CACHE” and "Settings Load" 
class CacheFreeLogger < ActiveSupport::TaggedLogging 

    @@excluded = ['Settings Load','CACHE'] 

    def add(severity, message = nil, progname = nil, &block) 
    if message.nil? 
     if block_given? 
     message = block.call 
     else 
     message = progname 
     progname = nil #No instance variable for this like Logger 
     end 
    end 
    if severity > Logger::DEBUG || !(@@excluded.map{|e| message.include? e}.include?(true)) 
     @logger.add(severity, "#{tags_text}#{message}", progname) 
    end 
    end 
end 

#Replace the existing logger with the filtering one 
ActiveRecord::Base.logger = CacheFreeLogger.new(ActiveRecord::Base.logger) if Rails.env.development? 

オリジナルのポストが拡張LoggerがTaggedLogginないが、それを私のために働かなかった。

この方法は、ブログで示唆された。http://heliom.ca/blog/posts/disable-rails-cache-logging

+0

これはレールで動作しません5 –

関連する問題