Frage

YQL SHOW TABLES hat CSV und HTML . Was ist mit einem Tisch für Apache Zugriffsprotokolle?

War es hilfreich?

Lösung

Es gibt jetzt eine regex Tabelle

http://developer.yahoo.com/yql/console/?q= wählen% 20% *% 20from 20regex% 20where% 20expression% 20% 3D% 20% 22 (. *)% 22% 20und% 20text% 3D% 22test% 22 & env = http% 3A% 2F% 2Fdatatables.org% 2Falltables.env

Wenn Sie einen regulären Ausdruck für Ihr Log-Format haben, können Sie diese Tabelle verwenden, um es zu analysieren.

Andere Tipps

Apache-Logs haben tatsächlich ein anpassbares Format so vorausgesetzt, ich bin, dass Sie das allgemeine Protokollformat oder eine th Standardwertes bedeuten. Wenn wir so etwas wie dieses Add wird es wahrscheinlich mit einem regex basiert Linie Leser, die Sie dann auf Apache-Logs gelten könnte. Danke für die Anregung.

Hier ist der Beginn einer gemeinsamen Protokoll Parsingtabelle. Der Code wie sie ist auf leere Räume blind aufgeteilt, die nicht genau ist, aber es ist ein Anfang. Sie würden vermutlich in der URL der Protokolldatei übergeben möchten, teilen Sie die Einträge auf Newline 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 aus: verwenden "http: // {Ihre Domain} /table.xml" als Tabelle; select * from table

Sie könnten dann erweitern sie Geodaten durch ip nachschlagen: verwenden "http: // {Ihre Domain} /table.xml" als Tabelle; select * from pidgets.geoip wo ip in (wählen Sie IP aus Tabelle)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top