이 경우 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 뒤에서조차도 완벽하게 작동합니다.
이것은 훌륭하지만 원격 로거가 이상적이지 않은 경우 클라이언트가 죽는 문제가 하나 있습니다. –
@duckyfuzz 그런 다음 [begin/rescue] (http://phrogz.net/ProgrammingRuby/tut_exceptions.html#handlingexceptions) 절에서 로깅 호출을 래핑하십시오. 알다시피, 이것이 애플리케이션에서 잘못 될 수있는 유일한 것이 아니며, 용인 할 수없는 모든 오류를 처리 할 준비가되어 있어야합니다. Ruby의 기본 기능을 사용하는 방법을 보여주기 위해 내 대답을 편집했습니다. – Phrogz