2009-06-24 8 views

Antwort

0

Apache-Protokolle haben tatsächlich ein anpassbares Format, also nehme ich an, dass Sie das gemeinsame Protokollformat oder einen der Standardwerte meinen. Wenn wir etwas so hinzufügen, wird es wahrscheinlich mit einem Regex-basierten Zeilenleser sein, den Sie dann auf Apache-Logs anwenden können. Danke für den Vorschlag.

0

Hier ist der Beginn einer allgemeinen Protokoll-Parsing-Tabelle. Der Code, wie er ist, wird blind auf leere Bereiche aufgeteilt, was nicht genau ist, aber es ist ein Anfang. Sie möchten wahrscheinlich die URL der Protokolldatei übergeben, die Einträge auf Newline aufteilen und dann jede Zeile analysieren.

<?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> 

Sie können es wie folgt ausführen: Verwendung "http: // {Ihre Domain} /table.xml" als Tabelle; Wählen Sie * aus der Tabelle

Sie könnten es dann erweitern geo Daten nach ip suchen: verwenden Sie "http: // {Ihre Domain} /table.xml" als Tabelle; Wählen Sie * aus pidgets.geoip, wo IP in (wählen Sie IP aus der Tabelle)

Verwandte Themen