때로는 특정 오류를 디버그하기 위해 거대한 로그 파일(압축을 푼 후 몇 GB)을 파헤쳐야 할 때도 있습니다.
이제 vim은 파일을 찾아볼 수 있지만 파일에서 무언가를 찾아야 할 때는 전혀 쓸모가 없습니다. 로그를 색인화하고 파일을 더 빠르게 검색할 수 있는 도구가 있습니까?
명령줄 도구를 사용하는 것이 좋습니다.
편집: 명확히 하기 위해 ack
or 와 같은 도구는 grep
일치하는 컨텍스트를 확인해야 하기 때문에 적합하지 않으며, -C
, -A
는 -B
충분하지 않습니다. 또한 ack
여전히 grep
사용하기에는 너무 느립니다.
답변1
명령줄 도구보다 조금 더 발전된 아주 좋은 로그 인덱서가 있습니다. 상업적으로,스프렁크그것은 크고 이기기가 어렵습니다.그레이 다이어리 2좋은 오픈 소스 구현입니다. Elasticsearch+Logstash도 꽤 좋습니다.
수집 서버를 수집하고 실행하도록 설정하는 데는 상당한 오버헤드가 있지만 일단 시스템의 일부로 중앙 로그 수집이 있으면 훌륭합니다. 여러 소스에서 로그를 쿼리하고 보고하는 것은 다중 계층 애플리케이션의 가장 큰 이점입니다.
명령줄의 경우 syslog에 로깅을 삽입할 수 있으면체계 통나무구현을 통해필드 수항목이 기록되는 경우. 이것이 텍스트 처리에 유용한지는 확실하지 않지만 메타데이터에 더 유용합니다.
임시 명령줄 도구가 있는지 확실하지 않지만 파일이 로드될 때마다 여전히 추출/로드/구문 분석 시간 패널티가 발생합니다.
그렇긴 하지만, less
단일 로그 파일에서 필요한 대부분의 작업을 수행합니다.
&pattern grep pattern
/pattern search forward
?pattern search backward
shift-f tail -f
이 tail
모드는 라이브 로그를 시청하는 데 유용한 이전 모드도 고려할 수 있습니다.
답변2
파일 검색이 less
옵션일 수 있습니다. 파일이 메모리에 들어갈 필요는 없습니다. 그리고 vim보다 훨씬 빠릅니다(LargeFile 플러그인을 사용하더라도).
단점은 grep
성능 관점에서 볼 때 아마도 이길 수 없을 것이라는 것입니다. 파일 크기가 RAM 크기에 가까우면 대부분의 대안에 문제가 있습니다.