2009-06-24 87 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