.png)
Кто-нибудь когда-нибудь использовал/создавал простой парсер журналов unix/linux, который может анализировать журналы, подобные следующим:
timestamp log_message \n
Упорядочить сообщения, проанализировать временную метку и вернуть:
- Все сообщения
- Сообщения после определенной даты (--since)
- Сообщения до определенной даты (--until)
- Комбинация --since, --until
Я мог бы написать что-то вроде этого, но не был уверен, есть ли что-то готовое. Это хорошо вписалось бы в какую-то автоматизированную отчетность, которую я планирую сделать.
решение1
Взгляни наэта программа на Python, которую я написалчтобы увидеть, соответствует ли это тому, что вы ищете, или может ли быть адаптировано к вашим потребностям.
решение2
Даже если вы найдете один, я не знаю, буду ли я ему доверять. Например, поскольку временная метка неизвестна заранее, единственное, что он может отличить DD-MM-YYYY и MM-DD-YYYY, это читать вперед, пока xx или zz с xx-zz-YYYY не станет больше 12. Я уверен, что есть и другие проблемы.
Я думаю, написать свой собственный формат было бы гораздо проще и надежнее, поскольку вы можете использовать стандартную библиотеку string для datetime вашего языка и явно указывать спецификаторы формата даты.
Например, с 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"
)
Если вам нужен модуль/библиотека, которая попытается определить формат, который они имеют, один из вариантов для Perl —Дата::Анализ.
решение3
Единственное решение, которое я когда-либо находил, которое было хотя бы наполовину приличным, былоsyslog-ngрегистрация в базе данных (в этом случае все сводится к простым SQL-запросам) — если предположить, что вы ведете все журналы централизованно, это не добавит особых проблем.
(Вставьте здесь очевидные преимущества и очевидные оговорки)