3

Каков наилучший способ добавить регистратор для всех ActiveResource in rails?Лучший способ добавить регистратор для ActiveResource

В моем приложении у меня есть некоторые методы, которые вызывают API через ActiveResource, что иногда дает ошибку TimeOut.

Итак, я просто хочу, чтобы log the url, method(get/post) и некоторые связанные с url вещи в журнале, для которых он дает TimeOut или любую другую ошибку.

ответ

0

Вы можете определить новый регистратор для ActiveResource, добавив в ваш config/environment.rb:

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/ и изменить файл в соответствии с вашими потребностями. Таким образом, вы контролируете поведение своих исключений, и, поскольку существуют разные типы исключений, вы сможете настроить их все.

+0

Да, но я хочу один метод обобщения, с помощью которого я могу что-то записывать в него, когда возникает какая-либо ошибка. – Salil

+0

@Salil Я обновил ответ, чтобы записать только ошибки. –

+0

Спасибо, человек, но мне нужно добавить также специальное сообщение, и я не думаю, что это возможно с помощью вышеуказанного кода. Поэтому, пожалуйста, дайте мне знать, как добавить пользовательское сообщение, и я приму ответ. – Salil

0

Как добавить регистратор для ActiveResource в рельсы?

Инстанцировать новый регистратор для ActiveResource

## config/environment.rb 

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

мне нужно добавить некоторые пользовательские сообщение

Override обработчики исключений из ActiveResource с вашими. Оформить заказ на source

Monkey-patch библиотечные функции, как показано ниже

## create config/initializers/active_resource_patch.rb 

module ActiveResource 
    class TimeoutError 
    def to_s 
     @message + " my custom message" 
    end 
    end 
end 

Я изменил тайм-аут ошибки, чтобы отобразить с помощью настраиваемого сообщения.

+0

Приятно, но есть ли способ, чтобы моя страница не разбивалась и записывалась только журнал. Фактически мы в настоящее время используем start-rescue и используем log-блок аварийного восстановления – Salil

+0

@Salil ActiveResource 'raise' множество пользовательских исключений тезисов. Я считаю, что вам нужно прокомментировать/исправить все эти коды, чтобы добиться этого. Очевидно, утомительная задача, потому что вы не можете отключить 'raise' – shiva

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