用于Apache访问日志的YQL表

时间:2009-06-24 04:28:24

标签: apache yql

YQL SHOW TABLES包含CSV和HTML。 Apache访问日志的表怎么样?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

Apache日志实际上有一个可自定义的格式,所以我假设你的意思是普通的日志格式或其中一个默认格式。如果我们添加类似这样的内容,那么可能会使用基于正则表达式的行阅读器,然后您可以将其应用于apache日志。谢谢你的建议。

答案 2 :(得分: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:// {your domain} /table.xml”作为表;从表

中选择*

然后你可以通过ip扩展它查找地理数据: 使用“http:// {your domain} /table.xml”作为表; select from from pidgets.geoip where ip in(从表中选择IP)