별도의 애플리케이션으로 로그 파일에서 데이터를 읽는 중입니다.
문제
애플리케이션에 의해 기록되는 로그 파일을 모니터링하고 싶습니다.파일을 한 줄씩 처리하거나 작성된 직후에 처리하고 싶습니다.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
제휴하지 않습니다 StackOverflow