【发布时间】:2017-06-29 10:58:52
【问题描述】:
我正在尝试编写一个 perl 脚本来处理 log4net 日志文件。日志文件中的字段用分号分隔。我的最终目标是捕获每个字段并填充一个 mysql 表。
通常我的行看起来有点像这样(都在一行上)
DEBUG;2017-06-13T03:56:38,316-05:00;2017-06-13 08:56:38,316;79ab0b95-7f58-
44a8-a2c6-1f8feba1d72d;(null);WorkerStartup 1;"Starting services."
这些很容易处理。我可以简单地用分号分割得到我需要的信息。
但是,有时末尾的“消息”字段可能会跨越几行,尤其是在存在堆栈跟踪的情况下。我想将整个消息捕获为单个列。我不能使用分号分割,因为下一行通常看起来像:
at some.random.classname
at another.classname
...
有人可以提供一些提示如何解决这个问题吗?
【问题讨论】:
-
寻找分隔符,并设置
$/。 -
您能详细说明一下吗?不明白你的意思?
-
您知道如何识别日志条目的开始。使用该信息来累积后续行,直到您点击另一个日志条目。
-
您可以阅读有关魔术变量
$/(输入记录分隔符)here的所有信息。