为所有ActiveResource in rails
添加记录器的最佳方法是什么?
在我的应用程序中,我有一些通过ActiveResource
调用API的方法,这有时会导致TimeOut错误。
所以,我只想在记录器中log the url
,method(get/post)
和一些与url相关的东西,它给出了TimeOut或任何其他错误。
答案 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