2016-06-22 4 views
0

현재 임베드 된 시스템 용 웹 사이트를 작성 중입니다. 목적은 로그 파일을 읽고 로그 파일 내용으로 json 파일을 수정하는 것입니다. Javascript - 자주 업데이트되는 파일에서 읽기

로그 파일

은 지속적으로 웹 응용 프로그램이 NodeJs와 socket.io와 함께 할 것입니다 다른 프로그램

에 의해 기록되고있다. html 페이지에 실시간으로 로그 데이터를 표시하는 또 다른 방법이 있습니까?

로그 파일을 방금 연 경우 잠그지 않습니까? 내가 알고리즘을 열고 1 초 안에 닫을 시간이 있을까요?

열어 두어 마지막 행을 항상 읽을 수있는 방법이 있습니까?

이 게시물을 찾았습니다 : "Reading from a frequently updated file"하지만 파이썬이 있습니다.

추가 정보 로그 파일에 기록하는 프로그램을 업데이트 할 수 있습니다. 하나의 가능성 (큰 로그 파일의 마지막 파일)을 사용하여 파일을 편집 할 수 있습니다. 이 고유 한 행은 매초 업데이트됩니다.

+0

Linux의 ** tail ** 명령과 같은 것을 찾으십니까? 로그 파일의 크기가 커짐에 따라 로그 파일을 다시로드하는 데 시간이 오래 걸립니다 (로그 파일 크기가 몇 MB 이상에 도달 할 가능성이있는 경우가 포함 된 것으로 간주하고 실용적이지는 않습니다). – FDavidov

+0

네, 꼬리하지만 매 초마다 새로운 줄만 필요합니다. – Weedoze

+0

Hummm .... 솔루션이있을 수 있습니다 (아래 Carlos에서 제안한 것과 같을 수 있지만 ... 얼마나 큰 로그 파일이 될 수 있습니까? 파일의 "TAIL"을 얻는 것은 마지막 레코드를 찾기 위해 파일을 실제로 스캔하는 것을 의미 할 수 있습니다. 로그를 작성하는 프로그램에 대한 제어 권한이 있다면이 프로그램에서 두 번 쓰는 것이 좋습니다. 한 번은 두 번째 시간이 다른 파일에 마지막으로 기록 된 라인 (이전 내용을 대체)을 쓰는 동안 로그. 이것은 약간 못 생겼지 만 성능면에서 아마도 가장 좋은 해결책이 될 것입니다. – FDavidov

답변

1

Node.js를 사용하려면 node-tail을 사용하는 것이 좋습니다.

파일을 "꼬리 (tail)"할 수 있습니다. 문서에 따르면이 당신이 그것을 할 거라고 방법은 다음과 같습니다 또한

Tail = require('tail').Tail; 

tail = new Tail("fileToTail"); 

tail.on("line", function(data) { 
    console.log(data); 
}); 

tail.on("error", function(error) { 
    console.log('ERROR: ', error); 
}); 

, 당신은 Node.js. 함께 제공 fs.watchFile을 사용할 수 있습니다

+0

답장을위한 Thx. 나는 노드 꼬리에 익숙하지 않다. 로그가 새로운 라인으로 업데이트 될 때 "tail.on ("라인 "..."은 초마다 호출됩니까?) – Weedoze

+0

Tail은 파일이 커짐에 따라 첨부 된 데이터를 출력하는 "tail -f"명령을 시뮬레이션합니다. 매 초마다 호출되는 것이 아니라 파일이 커질 때 호출됩니다. 이벤트는 비동기입니다. –

+0

제 편집에 이어 1 줄에 node-tail을 사용해야합니까? – Weedoze

관련 문제