Помогает ли это?
(\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\d\d\dZ)\s+(INFO|WARN|DEBUG|ERROR|FATAL|TRACE)\s+(.*?\s+.*?)(.*?)\-\s+(.*?)\s+(?:(\[?.*?\])?)(.*?\s+(?<id1>[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+)?\s+(\w+\s+)*(?<id2>[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+)?(\s+\w*)*)
Я внес следующие изменения:
- Для шаблонов идентификаторов вместо
.*-.*-.*-.*-.*
я использовал [a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+-[a-zA-Z0-9]+
. - Шаблоны идентификаторов именуются группами -
id1
и id2
. Итак, вам нужно будет получить их по этим именам, а не по номерам групп. Это помогает в том, что, даже если где-либо есть изменения в регулярном выражении, ссылка на вашу группу не должна изменяться. Эти группы будут иметь идентификаторы, если они присутствуют в строке журнала. - Я использовал
\w+
вместо .*
, где это применимо.
Журнальные строки 1 и 3 не найти ничего (даже раньше). Я не пытался решить эту проблему.
Примечание: Если вы используете Ruby 2+ или Perl, шаблон идентификатора может быть повторно использован в качестве подпрограммы вместо повторения полностью , Это повысит читабельность.