2012-01-30 129 views
3

我正在編寫一個在用戶計算機上運行並向服務器發送各種請求的客戶端應用程序。登錄到遠程位置

我想要做的是從服務器上的客戶端程序中創建日誌,以便可以輕鬆檢測到問題。

所以,我在想的是讓客戶端通過http登錄到遠程位置。

這是一個好主意,並有任何寶石或圖書館,這將有助於此?

回答

2

您可以使用DRb + Logger。兩者都是Ruby標準庫的一部分,所以你甚至不需要在任何一臺機器上安裝任何gem。

下面是它如何工作的:

遠程伐木機

require 'drb' 
require 'logger' 

DRb.start_service 'druby://0.0.0.0:9000', Logger.new('foo.log', 'weekly') 
DRb.thread.join 

機器上做記錄

require 'drb' 

$log = DRbObject.new_with_uri 'druby://remote.server.ip:9000' 

begin 
    $log.info "Hello World" 
rescue DRb::DRbConnError => e 
    warn "Could not log because: #{e}" 
    # Optionally re-log the message somewhere else. 
end 

puts "Yay, still running!" 

我只是兩臺機器之間的測試此相隔1500英里,其中客戶端機器甚至落後於NAT,並且工作完美無瑕。

+0

這很棒,但是如果遠程記錄器死亡,客戶端會死掉,這是不理想的。 – 2012-01-31 10:53:51

+0

@duckyfuzz然後在[開始/救援](http://phrogz.net/ProgrammingRuby/tut_exceptions.html#handlegexceptions)子句中包裝日誌記錄調用。你知道,這不是你的應用程序中唯一可能出錯的地方,你需要準備好處理所有你無法容忍的錯誤。我編輯了我的答案,向您展示如何使用Ruby的這個基本功能。 – Phrogz 2012-01-31 14:55:20