2009-09-03 62 views
0

我在查找使用YQL处理Web服务器日志文件的示例代码。YQL Web服务器日志文件正则表达式示例

YQL table for Apache access logs问:“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%20于是%20text%3D%22test%22 & ENV = HTTP%3A%2F%2Fdatatables.org%2Falltables.env

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

我希望看到一个完整的YQL示例,使用这个正则表达式使用this sample log file。下面是从the sample log file一行:

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 

在保罗的Tarjan例如用于expressiontext的值是硬编码。如何参考文件http://sky.prohosting.com/holeman/yql/serverlog/20090902.txt中的text?另外,对于expression如何使用参考而不是硬编码值?

+0

正则表只在其查询中支持文本和表达式。所以,直到它支持一个url参数,它不能用于解析在线日志文件。 – seth 2009-09-03 03:50:43

回答

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); 
    }); 
+0

我正在寻找一个完整的示例,其中包括引用日志文件,而不仅仅是一个硬编码行,因为我之前没有使用过YQL。我更新了这个问题。 – 2009-09-03 01:40:38

+0

运行您的请求有什么好运气?有点离开跟随者悬挂。 ;) – justSteve 2010-10-24 16:34:15