Как обеспечить лучший подход к ведению журнала для библиотечного класса в Ruby на Rails - PullRequest
0 голосов
/ 27 марта 2020

Я использую ruby для применения на рельсах. Я пишу клиент для внешнего обслуживания. Я хочу сделать лучшее ведение журнала вместо того, чтобы писать больше операторов журнала и обрабатывать исключения в каждом методе класса, как показано ниже.

Я не использую модель или контроллер. Это класс в папке app / lib?

Каков наилучший способ избежать дополнительных операторов журнала для этого сценария?

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

Вот мой клиент

app / lib / client.rb

class ExternalClient
 def initialize
   @client = ExternalService.new("<host>", "<username>", "<password>")
   @logger = Logger.new("log/client.log")
 end

 def customer
   begin
     @logger.info "Fetching customers"
     customers = @client.get_customers
     @logger.info "Response: #{customers}"
   rescue StandardError => e
     @logger.error "#{e.message} + "\n" + #{e.backtrace.join("\n")}"
   end
 end

 def products
   begin
     @logger.info "Fetching products"
     products = @client.get_products
     @logger.info "Response: #{products}"
   rescue StandardError => e
     @logger.error "#{e.message} + "\n" + #{e.backtrace.join("\n")}"
   end
 end

 def customer_address(customer_name)
   begin
     @logger.info "Fetching customer address"
     raise "Customer #{customer_name} not found" if @client.get_customers(customer_name)
     address = @client.get_customers(customer_name)
     @logger.info "Customer address #{address} for #{customer_name} customer"
   rescue StandardError => e
     @logger.error "#{e.message} + "\n" + #{e.backtrace.join("\n")}"
   end
 end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...