如何提取 web 日志,并存入 mysql? 在线等

2015-06-25 12:43:35 +08:00
 mrco
要解决的问题是:
分析网站的每一次用户的http request日志,匹配日志中的参数name,并将参数value存储到mysql数据库指定的表中。
如:下面是一次用户访问,table中。
127.0.0.1 533 [06/Jun/2015:10:26:31 +0800]- - 200 25994 127.0.0.1 8080 GET /xgz/download?_dc=18088889999&source=gdtjf8934h9hee&title=&author=&processName=&page=1&start=0&limit=50

需要提取的部分是
_dc
source
title

谢谢!
2116 次点击
所在节点    问与答
9 条回复
babyname
2015-06-25 12:44:48 +08:00
awk
mongodb
2015-06-25 12:45:48 +08:00
只能告诉你使用awk..具体怎么弄可以查询awk使用方法。
mrco
2015-06-25 12:48:12 +08:00
@babyname awk出来之后如何写入mysql昵?
cylin
2015-06-25 12:55:55 +08:00
@mrco 存入数据库这部分要用php、python等语言实现了
neo2015
2015-06-25 13:07:18 +08:00
ihciah
2015-06-25 14:04:12 +08:00
import urlparse
url="127.0.0.1 533 [06/Jun/2015:10:26:31 +0800]- - 200 25994 127.0.0.1 8080 GET /xgz/download?_dc=18088889999&source=gdtjf8934h9hee&title=&author=&processName=&page=1&start=0&limit=50"
url=url[url.find('?'):]
d=dict(urlparse.parse_qsl(url))
print d['_dc']

记得转义
ihciah
2015-06-25 14:15:07 +08:00
@ihciah
纠正:url=url[url.find('?'):] -> url=url[url.find('?')+1:]
附插入数据库代码:
import pymysql
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='', db='mylog',charset='utf8')
cur = conn.cursor()
p=lambda x:pymysql.escape_string(x)
cur.execute("INSERT INTO xx(a,b,c) VALUES('%s','%s','%s')" %(p(d['_dc']),p(d['source']),p(d['title'])))
conn.commit()
cur.close()
conn.close()
mrco
2015-06-25 14:50:04 +08:00
@ihciah 能否做到实时提取,实时插入昵?
ihciah
2015-06-25 23:32:21 +08:00
@mrco 实时是指的什么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/201035

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX