문제

애플리케이션에 의해 기록되는 로그 파일을 모니터링하고 싶습니다.파일을 한 줄씩 처리하거나 작성된 직후에 처리하고 싶습니다.eof에 도달한 후 파일이 확장되었는지 감지하는 방법을 찾지 못했습니다.

코드는 Mac과 PC에서 작동해야 하며 어떤 언어로든 사용할 수 있습니다. 하지만 저는 C++와 Perl에 가장 익숙합니다.

가장 좋은 방법에 대한 제안이 있는 사람이 있습니까?

도움이 되었습니까?

해결책

펄에서는 파일::꼬리 모듈은 필요한 것을 정확하게 수행합니다.

다른 팁

일반적인 답변은 다음과 같습니다.

EOF에서 대부분의 언어는 읽은 데이터가 없다고 반환합니다.일정 시간 후에 읽기를 다시 시도할 수 있으며 그 이후로 파일이 커진 경우 이번에는 운영 체제가 데이터를 반환합니다.

본질 tail -f 다음 루프는 다음과 같습니다.

open IN, $file;
while(1) {
  my $line = <IN>;
  if($line) {
    #process line...
  } else {
    sleep(1);
    seek(IN,0,1);
  }
}
close IN;

그만큼 구하다 호출은 EOF 플래그를 지우는 것입니다.

tail -f에서 표준 io를 읽을 수 있어야 합니다.

나는 tee를 통해 액션을 출력하고 그 후 테일링(또는 루프를 사용하는 것)을 생각했을 것입니다. ~ 위에) tee가 만든 파일을 일부 사용합니다.

Java의 경우 이 훌륭한 기사를 참조하십시오.

http://www.informit.com/guides/content.aspx?g=java&seqNum=226

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top