Extracting lines from a file, the smelly way
Yes, it is indeed a bit sketchy/confusing to use takewhile when you really don't want to take the lines, but discard them. I think it's better to use dropwhile and then use its return value instead of discarding it. I believe that that captures the intent much more clearly:

def extractEventLog(fh):
    fhlines = (x.strip() for x in fh)
    lines = itertools.dropwhile(lambda x: 'Event Log' not in x, fhlines)
    lines = itertools.dropwhile(lambda x: '-----' not in x, lines)
    lines.next() # Drop the line with the dashes
    lines = itertools.takewhile(len, lines) # Event log terminated by blank line
    for line in lines:
        yield line # In the real code, it's parseEventLogLine(line)