2012-01-30 100 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