1

我有一个模型,但我不希望它写入其查询的公共日志。是否可以为某些型号切换记录器?

4

3 回答 3

2

你可以这样做:

如果您想以不同的格式对其进行格式化,请创建一个自定义 Logger。如果格式需要相同,您可以忽略此操作。

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
如何更改 rails 记录器以使用来自 rake 任务的标准输出(rails2)

于 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 回答