Кто-нибудь когда-либо использовал / создавал простой парсер журналов unix / linux, который может анализировать журналы, подобные следующему:
timestamp log_message \n
Закажите сообщения, проанализируйте метку времени и верните:
Я мог написать что-то подобное, но не был уверен, есть ли что-то консервированное. Это хорошо впишется в некоторые автоматизированные отчеты, которые я планирую сделать.
Взгляни на эта программа Python, которую я написал чтобы увидеть, подходит ли он к тому, что вы ищете, или может быть адаптирован к вашим потребностям.
Даже если ты найдешь его, я не знаю, доверяю ли ему. Например, поскольку временная метка неизвестна заранее, единственное, что он может различить ДД-ММ-ГГГГ и ММ-ДД-ГГГГ, - это читать вперед, пока либо xx, либо zz с xx-zz-YYYY не станет больше, чем 12. Я уверен, что есть и другие проблемы.
Я думаю, что написать свой собственный будет намного проще и надежнее, поскольку вы можете использовать стандартную строку вашего языка для библиотеки 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 является Дата :: Разбор.
Единственное решение, которое я когда-либо нашел для этого, которое было даже наполовину приличным, было syslog-ng ведение журнала в базу данных (на этом этапе он сводится к простым SQL-запросам). Предполагая, что вы регистрируете все централизованно, это не добавляет слишком много дополнительных проблем.
(Вставьте сюда очевидные преимущества и очевидные предостережения)