我正在解析 exim 日志文件,由于我的处理方法,丢失了全部此文件中的条目。我根据交易 ID(即)重建交易,1OfiYX-0000Ev-7k
但仍然无法确定原始顺序。
<=
、、、字符的原始顺序很重要,对吧?有没有办法在不提供任何附加信息的情况下重建顺序=>
?==
**
家
答案1
我认为答案仅限于您询问的符号,即<=
始终位于您列出的其他每个符号之前,并且消息的Completed
行将位于所有这些符号之后。但是,其他每个符号==
、=>
、**
可以以任意顺序出现在<=
和之间Completed
。
需要记住的是,一条消息可以有多个收件人,并且每个收件人都可以被推迟(==
),因此这些符号的顺序很重要对于每个邮件收件人
<=
因此,当消息被本地服务器接受时,每条消息都应该只有一个
每条消息应该只有一行,Completed
表明本地服务器已处理完该消息
其中:
**
每条消息:收件人将恰好具有(失败) 或(已送达)之一=>
。它将是该特定消息:收件人的最后一条条目。
每个消息:收件人可能有一行或多==
行(延迟)。如果消息:收件人有==
日志行,则它将出现在该消息:收件人的=>
行之前**
。
很可能,只有当您认为重要时,给定消息中不同收件人的顺序才重要。
答案2
Exim 附带了一些工具来帮助进行日志文件分析。特别是 exigrep 可能很有趣,因为它可以在一行中搜索模式,然后显示全部该消息的日志行,包括匹配行之前的日志行。
Exim 附带了文档“Exim 规范”;至少,你应该有一个名为“spec.txt”的文件,如果没有 .pdf 或其他变体;这也可以在线访问http://www.exim.org/;您可能会发现“49. 日志文件”(记录日志文件的精确格式)和“50. Exim 实用程序”很有用。
每个日志行都有一个时间戳;按 exim 消息 ID 分组,然后按时间戳排序,您就可以恢复原始顺序。
答案3
是的,因为它们指示了消息流的方向。您需要改进处理方法,不要重新排序条目。