我有一个模型,但我不希望它写入其查询的公共日志。是否可以为某些型号切换记录器?
问问题
1052 次
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 回答