本番環境でのキャッシュのロギングを無効にしようとしています。クエリのロギングを停止するためにSQLを取得することに成功しましたが、ログエントリをキャッシュすることで不運です。運用ログの例行:レールでactiverecordキャッシュのログを無効にする方法
logger.debugステートメントを本番ログに表示したいので、すべてのログを無効にしたくありません。 MysqlとApacheでレール3.2.1を使用しています。 提案がありますか?
本番環境でのキャッシュのロギングを無効にしようとしています。クエリのロギングを停止するためにSQLを取得することに成功しましたが、ログエントリをキャッシュすることで不運です。運用ログの例行:レールでactiverecordキャッシュのログを無効にする方法
logger.debugステートメントを本番ログに表示したいので、すべてのログを無効にしたくありません。 MysqlとApacheでレール3.2.1を使用しています。 提案がありますか?
私は、下記のリンクポストによって提案された方法を使用してキャッシュログを沈黙。
私は、デフォルトの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
これはレールで動作しません5 –
私はあなたの答えは 'CACHE(0.0ms)'様のエントリに関連してどのようにレール2.3.5 – Joelio