YQL SHOW TABLES hat CSV und HTML. Was ist mit einer Tabelle für Apache Access Logs?YQL-Tabelle für Apache-Zugriffsprotokolle
Antwort
Es gibt jetzt eine regex Tabelle
Wenn Sie einen regulären Ausdruck für Ihre Log-Format haben, können Sie diese Tabelle, um sie zu analysieren, verwenden.
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.
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)