Parece que seus arquivos de log são, na verdade, um formato XML. Se for esse o caso, então o que você REALMENTE deve estar fazendo é usar um analisador XML. Leia esta famosa resposta StackOverflow se você quer mais algumas informações.
Com base na sua descrição, um analisador baseado em SAX é provavelmente sua melhor aposta: eles são analisadores orientados por fluxo e não requerem que você carregue todo o arquivo na memória. Como você está realizando apenas uma transformação muito simples no XML, o XSLT provavelmente é um bom candidato para isso (e deve ser FAST se você usar xsltproc
de libxslt
). Aqui está uma uma resposta SO que demonstra uma técnica potencialmente relevante .