2012-01-30 4 views
3

사용자 컴퓨터에서 실행되는 클라이언트 응용 프로그램을 작성하고 서버에 다양한 요청을 보냅니다.원격 위치에 로깅

문제는 쉽게 발견 할 수 있도록 클라이언트 프로그램의 로그를 서버에서 사용할 수 있도록하고 싶습니다.

그래서 내가 생각한 것은 HTTP를 통해 원격 위치로 클라이언트 로그를 작성하는 것이 었습니다.

이것은 좋은 생각인가요? 쉽게 할 수있는 보석이나 라이브러리가 있습니까?

답변

2

이 경우 DRb + Logger을 사용할 수 있습니다. 두 가지 모두 Ruby 표준 라이브러리의 일부이므로 두 시스템 모두에 보석을 설치할 필요조차 없습니다. 여기 그것이 작동하는 방법

는 다음과 같습니다

원격 로깅 기계

require 'drb' 
require 'logger' 

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

기계, 어디 그냥 1천5백마일 떨어져 두 컴퓨터 사이에이 테스트

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!" 

로깅을 수행 클라이언트 머신은 NAT 뒤에서조차도 완벽하게 작동합니다.

+0

이것은 훌륭하지만 원격 로거가 이상적이지 않은 경우 클라이언트가 죽는 문제가 하나 있습니다. –

+0

@duckyfuzz 그런 다음 [begin/rescue] (http://phrogz.net/ProgrammingRuby/tut_exceptions.html#handlingexceptions) 절에서 로깅 호출을 래핑하십시오. 알다시피, 이것이 애플리케이션에서 잘못 될 수있는 유일한 것이 아니며, 용인 할 수없는 모든 오류를 처리 할 준비가되어 있어야합니다. Ruby의 기본 기능을 사용하는 방법을 보여주기 위해 내 대답을 편집했습니다. – Phrogz