2009-06-24 4 views

답변

0

아파치 로그에는 실제로 사용자 정의 가능한 형식이 있으므로 공용 로그 형식이나 기본 설정 중 하나를 의미한다고 가정합니다. 이런 식으로 우리가 추가하면 regex 기반 라인 리더가 아파치 로그에 적용 할 수 있습니다. 제안 해 주셔서 감사합니다. 당신이 당신의 로그 형식에 대한 정규식이있는 경우

0

다음은 일반적인 로그 파싱 테이블의 시작입니다. 있는 그대로의 코드는 맹목적으로 빈 공간으로 나뉘어집니다. 이는 정확하지 않지만 시작일뿐입니다. 로그 파일의 URL을 전달하고 개행 문자를 분리 한 다음 각 행을 구문 분석하려고합니다.

<?xml version="1.0" encoding="UTF-8"?> 
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd"> 
    <meta> 
     <author></author> 
     <sampleQuery>select * from {table}</sampleQuery> 
    </meta> 
    <bindings> 
     <select itemPath="" produces="XML"> 
      <inputs> 
       <key id="url" type="xs:string" paramType="variable"/> 
      </inputs> 
      <execute><![CDATA[ 

        //http://en.wikipedia.org/wiki/Common_Log_Format 
      var entry = '208.240.243.170 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326'; 

      var names = ['IP', 'RFC 1413', 'userid', 'date', 'request', 'status', 'size']; 
      var values = entry.split(' '); 

      var resp = {}; 

      for (var i in names) { 
       var name = names[i]; 
       resp[name] = values[i]; 
      } 

      response.object = resp; 

     ]]></execute> 
     </select> 
    </bindings> 
</table> 

당신은 다음과 같이 실행할 수 있습니다 : 사용에 "http : // {도메인} /table.xml"테이블로; * 표에서 선택 *

그런 다음 IP 주소 : "http : // {your domain} /table.xml"을 표로 사용하여 위치 정보 데이터를 확장 할 수 있습니다. select * from pidgets.geoip 어디에서 ip (테이블에서 IP 선택)