문제

YQL 쇼 테이블 CSV 및 HTML이 있습니다. Apache Access Logs의 테이블은 어떻습니까?

도움이 되었습니까?

해결책

이제 Regex 테이블이 있습니다

http://developer.yahoo.com/yql/console/?q=select%20* 20from%20Regex%20Where920Expression%20%3D%20%22(.*)%22%20and%20Text%3D% 22test%22 & env = http%3a%2f%2fdatatables.org%2falltables.env

로그 형식에 대한 정규식이있는 경우 해당 테이블을 사용하여 구문 분석 할 수 있습니다.

다른 팁

Apache Logs는 실제로 사용자 정의 가능한 형식을 가지고 있으므로 공통 로그 형식 또는 기본값 중 하나를 의미한다고 가정합니다. 이와 같은 것을 추가하면 Regex 기반 라인 리더와 함께 Apache 로그에 적용 할 수 있습니다. 제안 해주셔서 감사합니다.

다음은 일반적인 통나무 구문 분석 테이블의 시작입니다. 코드는 빈 공간에서 맹목적으로 분할되며 정확하지는 않지만 시작입니다. 로그 파일의 URL을 전달하고 Newline에서 항목을 분할 한 다음 각 줄을 구문 분석하고 싶을 것입니다.

<?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 : // {domain} /table.xml"을 테이블로 사용하십시오. * 테이블에서 *를 선택하십시오

그런 다음 IP로 GEO 데이터를 조회 할 수 있습니다. "http : // {domain} /table.xml"을 테이블로 사용하십시오. * pidgets.geoip에서 *를 선택하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top