Я использую 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