2014-01-28 2 views
0

호기심에서 벗어났습니다. 나는 루비 코드와 함께 작동하는 방법을 알아보기 위해 file-tail 루비 라이브러리를 사용해 보았습니다. 그러나 코드가 작동하지 않는 것 같습니다. 파일이 같은 디렉토리에파일 테일 작업을 할 수 없습니다.

$:.unshift File.dirname(__FILE__) 

filename = 'logger.log' 

require "file-tail" 

File.open(filename) do |log| 
    log.extend(File::Tail) 
    log.interval = 10 
    log.backward(10) 
    log.tail { |line| puts line } 
end 

logger.log : 여기

은 내가 피곤 (logger.rb)입니다. 이제, 실행할 때 : $ ruby logger.rb 내 로그에서 마지막 10 줄을 볼 수 있지만 logger.log 파일을 열면 로그 데이터가 추가되어 콘솔에 아무런 진도가 표시되지 않습니다. 나는 새로운 로그를 출력하지 않는다는 것을 의미한다.

문제가 있다고 생각했습니다. 그래서 상속을 시도하고 다음과 같이 상속받은 클래스에 File :: Tail을 포함시켜 보았습니다.

$:.unshift File.dirname(__FILE__) 

filename = 'logger.log' 

require "file-tail" 

class FileTail < File 
    require "file-tail" 
    include File::Tail 
end 

log = FileTail.new(filename) 
log.interval = 10 
log.backward(10) 
log.tail { |line| print line } 

그러나 이것은 동일한 방식으로 작동합니다 !!

모든 포인터?

Ruby-2.0.0-p353이 설치된 MAC OC X 10.8.5에서 실행됩니다.

또한 루비에 웹 버전의 꼬리가 구현되어 있는지 알려 주시기 바랍니다.

+0

수동 업데이트를 파일에 저장 했습니까? –

+0

파일을 로그하려면, 맞습니까? 그래, 내가 했어. – Surya

+0

시도해 보니 나를 위해 일했습니다. –

답변

0

잘못된 것이 있습니다. 이것은 로거 파일의 모든 스트림을 닫을 때 작동합니다. 루비 코드에서 파일을 열었지만 파일 스트림을 닫지 않았습니다. 어쩌면 그 이유는 파일 - 꼬리를 사용하여 내 콘솔에서 로그 출력을 보지 못했기 때문일 것입니다.

따라서 실행중인 로그/텍스트 파일의 모든 스트림을 file-tail 프로그램으로 닫아야합니다.

관련 문제