Sorting Apache Log Files

Steve Holden sholden at holdenweb.com
Thu Jun 28 20:40:03 CEST 2001


Note, however, that you only get strptime() if your C library defines it.
There's a pure-Python implementation, but for more general usage you can't
beat the (free) mxDateTime module. See

    www.egenix.com

regards
 Steve
--
http://www.holdenweb.com/


"David Kirtley" <dkirtley at panam.edu> wrote in message
news:1ca31bad.0106271243.58052b7 at posting.google.com...
> > Lenny Self wrote:
>
> >>> SNIP <<<
>
> > import string
> >
> >   datestamp1 = line1[string.find(line1,"[") + 1:string.rfind(line1,"]")]
> >   datestamp2 = line2[string.find(line2,"[") + 1:string.rfind(line2,"]")]
> >   # Compare the date stamps and return appropriate value
> >   if datestamp1 < datestamp2:
> >           return -1
> >   elif datestamp2 < datestamp1:
> >           return 1
> >   else:
> >           return 0
> >ist.sort(compare)
> > Writing sorted list to new file
> >pen("d:/work/newfile.txt","w").writelines(list)
>
> That won't work like you think it will. That will do a lexographic
> comparison (alphabetical) that will partially work but not when they
> are on boundiries (worst case example: Jan < Apr  works but Jul < Aug
> doesnt.)
>
> The way to handle it is to convert it to a numeric time value:
>
> for the default Apache log format::  00/Mon/0000/00:00:00
>
>
> from time import *
>
> timestamp = "00/Mon/0000/00:00:00" #<- insert a real timestamp here.
> myTime = mktime(strptime(timestamp,"%d/%b/%Y:%H:%M:%S"))
>
> Now you can use myTime to make the comparison.
>
> David Kirtley





More information about the Python-list mailing list