2009-06-24 59 views

回答

0

Apache日誌實際上有一個可定製的格式,所以我假設你的意思是通用日誌格式或默認值之一。如果再加上這樣的事情它可能會與基於正則表達式的行閱讀器,你可以再申請到Apache日誌。感謝您的建議。

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」 爲表; select * from表

然後,您可以通過ip查找地理數據: 使用「http:// {your domain} /table.xml」作爲表;其中IP的(從表中選擇IP)

SELECT * FROM pidgets.geoip