0

我正在寻找使用 YQL 处理 Web 服务器日志文件的示例代码。

Apache 访问日志的 YQL 表询问“Apache 访问日志的表怎么样?” spullara回复

如果我们添加这样的内容,它可能会使用基于正则表达式的行阅读器,然后您可以将其应用于 apache 日志。

后来Paul Tarjan说:

现在有一个正则表达式表

http://developer.yahoo.com/yql/console/?q=select%20 %20from%20regex%20where%20expression%20%3D%20%22%28。%29%22%20and%20text%3D%22test%22&env=http%3A%2F%2Fdatatables.org%2Falltables.env

因此,看起来正则表达式功能已添加到 YQL。

我想通过这个示例日志文件看到一个使用这个正则表达式功能的完整 YQL 示例。这是示例日志文件中的一行:

69.12.127.10 - - 02/Sep/2009:01:53:52 MDT "GET /holeman/cgi-bin/get_page.cgi?../cxx/sw_stack" HTTP/1.1 200 999 Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.2) Gecko/20090810 Ubuntu/9.10 (karmic) Firefox/3.5.2

仅显示上述示例行引用的 IP 地址和页面:

69.12.127.10 /holeman/cgi-bin/get_page.cgi?../cxx/sw_stack

在 Paul Tarjan 示例中,expression和的值text是硬编码的。如何引用text文件http://sky.prohosting.com/holeman/yql/serverlog/20090902.txt中的内容?另外,expression如何使用参考而不是硬编码值?

4

1 回答 1

1

这是一个非常原始的正则表达式来做你想做的事。

$.getJSON('http://query.yahooapis.com/v1/public/yql?q=select%20match1%2Cmatch7%20from%20regex%20where%20expression%20%3D%20%22%5E(%5C%5CS%2B)%20(%5C%5CS%2B)%20(%5C%5CS%2B)%20(%5C%5CS%2B)%20(%5C%5CS%2B)%20%5C%5C%5C%22(%5C%5CS%2B)%20(%5C%5CS%2B)%5C%5C%5C%22%22%20and%20text%3D%2269.12.127.10%20-%20-%2002%2FSep%2F2009%3A01%3A53%3A52%20MDT%20%5C%22GET%20%2Fholeman%2Fcgi-bin%2Fget_page.cgi%5C%5C%3F..%2Fcxx%2Fsw_stack%5C%22%20HTTP%2F1.1%20200%20999%20Mozilla%2F5.0%20(X11%3B%20U%3B%20Linux%20x86_64%3B%20en-US%3B%20rv%3A1.9.1.2)%20Gecko%2F20090810%20Ubuntu%2F9.10%20(karmic)%20Firefox%2F3.5.2%0A%22&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=?', function(data) {
  console.log( data.query.results.matches.match1 );
  console.log( data.query.results.matches.match7 );
  });
于 2009-09-03T00:51:14.670 回答