Я разбираю файлы журнала exim и из-за моего метода обработки теряю исходный порядок все записи в этом файле. Я перестраиваю транзакции по их идентификатору транзакции (т.е. 1OfiYX-0000Ev-7k
), но по-прежнему нет способа определить исходный порядок.
В <=
, =>
, ==
, **
исходный порядок персонажей имеет значение, верно? Есть ли способ восстановить заказ без дополнительной информации?
Αντίο
Exim поставляется с инструментами, помогающими анализировать файлы журнала. В частности, может представлять интерес exigrep, так как он может искать узор в строке, а затем показывать все строки журнала для этого сообщения, включая те, которые были перед строкой соответствия.
Exim поставляется с документацией «Спецификация Exim»; по крайней мере, у вас должен быть файл с именем "spec.txt", если не .pdf или другой вариант; это также онлайн на http://www.exim.org/; вы можете найти «49. Файлы журналов», документирующие точный формат файлов журналов, и «50. Утилиты Exim».
Каждая строка журнала имеет отметку времени; сгруппируйте по идентификатору сообщения exim, а затем отсортируйте по метке времени, и вы получите исходный порядок обратно.
Я думаю, что ответ, ограниченный исключительно символами, о которых вы спрашиваете, заключается в том, что <=
всегда будет стоять перед каждым из других перечисленных вами символов, а сообщение Completed
линия появится после всех этих символов. Однако каждый из остальных символов ==
, =>
, **
, могут появляться в любом порядке между <=
и Completed
.
Следует иметь в виду, что сообщение может иметь несколько получателей, и каждый из этих получателей может быть отложен (==
), поэтому порядок этих символов имеет значение для каждого получателя сообщения
Итак, в каждом сообщении должно быть ровно одно <=
когда сообщение принято локальным сервером
В каждом сообщении должно быть ровно одно Completed
строка, указывающая, что локальный сервер завершил работу с сообщением
Между этими:
Каждое сообщение: получатель будет иметь ровно одно из **
(отказ) или =>
(доставлен). Это будет последняя запись для этого конкретного сообщения: получатель.
Каждое сообщение: получатель может иметь одно или несколько ==
(отложенные) линии. Если сообщение: у получателя есть ==
строка журнала, это произойдет перед этим сообщением: получатель =>
или **
линия.
Порядок разных получателей в сообщении имеет значение, только если вы думаете, что это имеет значение, скорее всего.
Да дело в том, что они указывают направление потока сообщений. Вам необходимо улучшить свой метод обработки, чтобы не изменять порядок записей.