为ActiveResource添加记录器的最佳方法

时间:2014-11-28 08:53:55

标签: ruby-on-rails ruby ruby-on-rails-3 logging activeresource

为所有ActiveResource in rails添加记录器的最佳方法是什么?

在我的应用程序中,我有一些通过ActiveResource调用API的方法,这有时会导致TimeOut错误。

所以,我只想在记录器中log the urlmethod(get/post)和一些与url相关的东西,它给出了TimeOut或任何其他错误。

3 个答案:

答案 0 :(得分:0)

您可以通过将此记录器添加到config/environment.rb来为ActiveResource定义新的记录器:

 logger = Logger.new('log/active_resource.log', 'daily');·
 logger.level = Rails.env.dev? ? Logger::DEBUG : Logger::INFO;·
 ActiveResource::Base.logger = logger

如果您只想记录错误,则只能将其用于Logger::Error

 logger = Logger.new('log/active_resource.log', 'daily');·
 logger.level = Logger::Error
 ActiveResource::Base.logger = logger

要进行自定义异常处理,我建议将source file ActiveResource异常处理复制到config/initializers/并根据需要更改文件。这样您就可以控制异常的行为,并且由于存在不同类型的异常,您可以自定义所有异常。

答案 1 :(得分:0)

如何在rails中为ActiveResource添加记录器?

ActiveResource

实例化新的记录器
 ## config/environment.rb

 logger = Logger.new('log/active_resource.log')
 logger.level = Logger::DEBUG 
 ActiveResource::Base.logger = logger

我需要添加一些自定义消息

用您的ActiveResource覆盖 ## create config/initializers/active_resource_patch.rb module ActiveResource class TimeoutError def to_s @message + " my custom message" end end end 的异常处理程序。查看source

Monkey-patch库函数如下

{{1}}

我修改了超时错误以显示自定义消息。

答案 2 :(得分:0)

不确定您尝试添加哪种类型的自定义消息。也许你可以选择Logger继承:

class CustomLogger < Logger
  def self.error(message)
    super(message  + ' my custom message')
  end
end

#added code from Paulo Fidalgo
logger = CustomLogger.new('log_location', 'daily')
logger.level = Logger::ERROR
ActiveResource::Base.logger = logger