#!/usr/bin/perl # # wl-sql - web server log to SQL insert calls. # # Take all entries in the web server log given on STDIN. Parse them and # prepare them for insert into an SQL database such as the below: # # CREATE TABLE httplogs ( # host VARCHAR(15), # ident VARCHAR(10), # authuser VARCHAR(10), # accesstime timestamp, # method VARCHAR(4), # url VARCHAR(256), # protocol VARCHAR(10), # status INTEGER(3), # bytes INTEGER(6), # referrer VARCHAR(256), # browser VARCHAR(256) # ); # # This and other hacks can be found at: http://oddgeek.info/ # # Copyright (c) 2005 Jason A. Dour # # This software is provided 'as-is', without any express or implied warranty. # In no event will the authors be held liable for any damages arising from the # use of this software. # # Permission is granted to anyone to use this software for any purpose, # including commercial applications, and to alter it and redistribute it # freely, subject to the following restrictions: # # 1. The origin of this software must not be misrepresented; you must not # claim that you wrote the original software. If you use this software in a # product, an acknowledgment in the product documentation would be # appreciated but is not required. # # 2. Altered source versions must be plainly marked as such, and must not # be misrepresented as being the original software. # # 3. This notice may not be removed or altered from any source # distribution. # # # Version Information # # 1.0 2005.05.26 # # Put in comments. Cleaned up formatting. # # primordial ooze # # Used every once in a while to dump web log data into an sqlite # database. Was tired of doing this on command line. # # For every web log entry line on STDIN... while () { # Parse the entry... ($host, $rfc931, $authuser, $timestamp, $request, $status, $bytes, $blahre, $client) = /^(\S+) (\S+) (\S+) \[(.+)\] \"(.+)\" (\S+) (\S+) \"(.+)\" \"(.+)\"/; # Split the request into component parts... ($method, $url, $proto) = split(/ /,$request); # Output the sql insert line... print "insert into httplogs values (\"$host\",\"$rfc931\",\"$authuser\",\"$timestamp\",\"$method\",\"$url\",\"$proto\",\"$status\",\"$bytes\",\"$blahre\",\"$client\");\n"; } # We're done. Shibby! exit(0);