1

私はモデルを持っていますが、そのクエリを共通ログに書きたくないのです。一部の機種でロガーを切り替えることは可能ですか?

4

3 に答える 3

2

あなたはこれを行うことができます:

別の形式にする場合は、カスタム ロガーを作成します。形式を同じにする必要がある場合は、これを無視できます。

class ModelLogger < Logger
  def format_message(severity, timestamp, progname, msg)
    "#{timestamp.to_formatted_s:)db)} #{severity} #{msg}\n"
  end
end

config/initializers/ で、logs.rb を作成し、これを追加します。

model_logfile = File.open("#{RAILS_ROOT}/log/model.log", 'a')
model_logfile.sync = true
MODEL_LOG = ModelLogger.new(model_logfile)

ここで、サーバーを再起動した後、

MODEL_LOG.debug "This will be logged to model.log"
MODEL_LOG.error "Errors also can be logged."
于 2012-08-09T13:35:03.793 に答える
1

これはあなたの質問に答えるはずです。STDOUT をニーズに合ったものに置き換えます
。rake タスク (rails2) から標準出力を使用するように Rails ロガーを変更する方法

于 2012-08-09T13:34:40.303 に答える
1

私は push-core gem を使用していますが、2 秒ごとに次のような多くの迷惑なメッセージがログに書き込まれます。

Push::Message Load (0.6ms)  SELECT "push_messages".* FROM "push_messages" ...

ログから「Push::Message Load」イベントを削除するために、次のコードをイニシャライザに追加しました。

# Disable annoying (every 2 sec) "Push::Message Load" events
ActiveRecord::LogSubscriber.class_eval do
  alias_method :old_sql, :sql

  def sql(event)
    return if event.payload[:name] =~ /Push::Message Load/
    old_sql(event)
  end
end
于 2012-11-21T12:50:46.410 に答える