Dê uma olhada no este programa em Python Eu escrevi para ver se chega perto do que você está procurando ou pode ser adaptado às suas necessidades.
Alguém já usou / criou um analisador de logs unix / linux simples que pode analisar logs como o seguinte:
timestamp log_message \n
Ordene as mensagens, analise o carimbo de data e hora e retorne:
Eu poderia escrever algo assim, mas não tinha certeza se havia algo enlatado. Isso se encaixaria bem em alguns relatórios automatizados que estou planejando fazer.
Dê uma olhada no este programa em Python Eu escrevi para ver se chega perto do que você está procurando ou pode ser adaptado às suas necessidades.
Mesmo que você encontre uma, não sei se confiaria nela. Por exemplo, como o registro de data e hora não é conhecido com antecedência, o único que poderia distinguir DD-MM-AAAA e MM-DD-AAAA seria ler adiante até que xx ou zz com xx-zz-YYYY seja maior que 12. Tenho certeza de que há outros problemas.
Escrever o seu próprio seria muito mais fácil e confiável, pois você pode usar a string padrão da sua linguagem para a biblioteca datetime e especificar explicitamente os especificadores do formato de data.
Por exemplo, com o Python:
import re
from datetime import datetime
line_regex = re.compile(
r'''
\[
(?P<day> \d{1,2} )
/
(?P<month> \w{3} )
/
(?P<year> \d{4} )
:
(?P<hour> \d{2} )
:
(?P<minute> \d{2} )
:
(?P<second> \d{2} )
\s
(?P<timezone> -?\d{4} )
\]
''', re.VERBOSE)
new_entry['time'] = datetime.strptime(
parsed_line['day'] +
parsed_line['month'] +
parsed_line['year'] +
parsed_line['hour'] +
parsed_line['minute'] +
parsed_line['second']
, "%d%b%Y%H%M%S"
)
Se você quiser um módulo / biblioteca que tentará descobrir o formato que existe, uma opção para Perl é Date :: Parse .
A única solução que eu já encontrei para isso, que era meio decente, era syslog-ng se conectando a um banco de dados (ponto no qual ele é reduzido a consultas SQL simples) - Supondo que você esteja registrando tudo centralmente, isso não causa muita dor adicional.
(Insira benefícios óbvios e advertências óbvias aqui)