Python: Parse Apache log to sqlite database

Tuesday, April 15th, 2008
Advertisement

Subscribe.
Enter your email:

This Python script was written for a friend in Australia, as part of his Ph.D project. The script will parse the Apache server log into sqlite3 database.

Apache server log like this:

23.13.171.152 - - [26/Sep/2007:21:20:36 +0800] “GET /forum/Themes/BlueStory/images/bbc/ftp://ftp.gif HTTP/1.1? 200 191 “http://www.malaysiaindah.com/index.php?action=post;topic=587.0;num_replies=3? “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7?

could be parse to an sqlite database, with the class below.

class Parser:
def __init__(self, serverLog, db):

if db.strip() == "":
db = "log.db"
try:
conn = sqlite3.connect(db)
cursor = conn.cursor()

cursor.execute(
"create table if not exists log (ip, date, time, gmt, request, errorcode, bytes, referel, osa)"
)

except sqlite3.Error, error:
wx.MessageBox(str(error), "Info")
exit()

numLog = len(open(serverLog).readlines())

for line in open(serverLog, "r"):
data = []
a = line.split(‘"‘)
line = line.split()

data.append(line[0]) #ip
data.append(line[3][1:line[3].index(":")]) #date
data.append(line[3][line[3].index(":") + 1:]) #time
data.append(line[4][:-1]) #gmt
data.append(line[5][1:] + " " + line[6]) #urlreq
data.append(line[8]) #statuscode
data.append(line[9]) #bytestr
data.append(line[10][1:-1]) #referel
data.append(a[-2]) #osagent

try:
cursor.execute(
"insert into log values(?, ?, ?, ?, ?, ?, ?, ?, ?)",
(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8])
)

except sqlite3.Error, error:
wx.MessageBox(str(error), 'Info')
exit()

conn.commit()
cursor.close()
conn.close()
If you are new here, you might want to subscribe to the RSS feed or newsletter.

Enter your email address:

Creates the exact copy of your hard disk and allows you to instantly restore the entire machine.
New Acronis True Image Home 2010 is the most reliable and easy in use backup solution. Now with online backup option!
15% Discount Code: FMAATIH2010

What else?

Like this article? Share it

 Digg  del.icio.us  TwitThis  Facebook  Reddit  StumbleUpon

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>