2013-10-22 5 views
0

일반 로그 형식 로그 파일에서 세 가지 정보를 가져 오려고합니다. 로그 파일의 항목은 다음과 같습니다 parse apache 공용 로그 형식 로그 파일

65.54.188.137 - - [03/Oct/2007:02:20:22 -0400] "GET /~longa/statistics/code/xlispstat/smoothers/spline/ HTTP/2.0" 301 2633 

그에서

, 내가 IP, URL에의 발생 수, 해시의 상태 코드를 저장할. 나는 그들 각각이 그들 자신이되어야한다고 생각했다. 오른쪽 방향으로 나를 가리킬 수있는 경우에도 도움이 될 것입니다.

답변

1

정규식을 사용하여 로그 항목의 정보를 읽을 수 있습니다. 이런 식으로 뭔가 :

lines.each do |line| 
    matches = /^(\S+).*GET\s(.*)\sHTTP\S*\s(\d+)/.match(line) 
    ip = matches[1] 
    url = matches[2] 
    status = matches[3] 
do 

는 그런 다음 해시에이 정보를 넣어 당신이 좋아하는 방법으로 처리 할 수 ​​있습니다.

+0

그 정규식은 그 중 세 가지 중 하나를 선택합니까? –

+0

그것은 세 가지 모두를 집어 들고 세 가지가 모두 존재할 경우에만 일치합니다 *. –